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并获取数字12。或者甚至更复杂的东西,比如ifelse(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 回答