2

まず、5 行 10 列のデータフレーム (「年」と呼びましょう) があります。(x1-x2)/x1 を実行する新しいものを作成する必要があります。x1 は列の最初の要素、x2 は「年」の列の 2 番目の要素、次に (x2-x3)/x2 などです。rollapplyタスクに最適なツールだと思いましたが、そのような関数を定義してに挿入する方法がわかりませんrollapply

私はRが初めてなので、質問が基本的すぎないことを願っています。とにかく、ここで同様の質問を見つけることができなかったので、誰かが私を助けてくれたら本当に感謝しています.

4

2 に答える 2

1

と を使用できます。使用する必要はありませtransform, difflengthrollapply

> df <- head(iris,5)  # some data
> transform(df, New = c(NA, diff(Sepal.Length)/Sepal.Length[-length(Sepal.Length)] ))
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species         New
1          5.1         3.5          1.4         0.2  setosa          NA
2          4.9         3.0          1.4         0.2  setosa -0.03921569
3          4.7         3.2          1.3         0.2  setosa -0.04081633
4          4.6         3.1          1.5         0.2  setosa -0.02127660
5          5.0         3.6          1.4         0.2  setosa  0.08695652
于 2014-06-02T20:19:36.037 に答える
0

diff.zoo引数を持つzooパッケージでは、arithmetic=FALSE各数値を各列の事前分布で除算します。

library(zoo)
as.data.frame(1 - diff(zoo(DF), arithmetic = FALSE))
于 2014-06-02T23:24:28.117 に答える