0

典型的なスプレッドシートでは、任意の行のセルを参照する数式を作成できます。

したがって、次のデータがあるとしましょう。

a=1:10
b=11:20
c=data.frame(a,b)

これはこれをもたらすでしょう:

    a  b
1   1 11
2   2 12
3   3 13
4   4 14
5   5 15
6   6 16
7   7 17
8   8 18
9   9 19
10 10 20

したがって、スプレッドシートでは、セルとc2なる絶対式c$b2*c$a1を配置して、数値を取得できます12ifelse(c$a>5,c$b*c$a[-1]*2,c$b*c$a[-1]または、相対参照を使用するなど、さらに複雑なものもあります。

    a  b   c
1   1 11  NA
2   2 12  12
3   3 13  26
4   4 14  42
5   5 15  60
6   6 16  80
7   7 17 204
8   8 18 252
9   9 19 304
10 10 20 360

Rはスプレッドシートではないことは知っていますが、データフレームをそのような方法で処理できるパッケージや関数はありますか、それともそのような機能に根本的な問題がありますか?複数のレコードまたは行のスパンを必要とする関数でこれらの問題が発生し続けます。私が扱っているほとんどすべてのものは、それが役に立ったとしても時系列です。そのような機能を説明する文書はどこかにありますか?多分?topicどこかで逃したことがあります。

4

1 に答える 1

2

あなたは近かったので、最初と最後の値を除外してオフセットを完了し、それをすべてラップする必要がありますifelse:

a = 1:10
b = 11:20
d = data.frame(a,b)
d$c = ifelse(d$a > 5, c(NA, d$b[-1] * d$a[-nrow(d)]) * 2, c(NA, d$b[-1] * d$a[-nrow(d)]))

(非常に一般的に使用される関数であるdため、変数名として選択します。)c

よりきちんとした答えを得るには、主な計算を除外しifelse、乗数にのみ使用します。

 d$c = ifelse(d$a > 5, 2, 1) * c(NA, d$b[-1] * d$a[-nrow(d)])
于 2012-05-11T01:29:44.753 に答える