添加一列,该列是另一列中行的子集的函数

时间:2014-05-01 18:27:01

标签: r

我知道如何添加一个列,例如,两个其他列的总和,但我正在寻找一种方法来创建一个新列,该列等于另一列中行的子集的总和。

例如,我有一个表“table.1”,第三列“table.1 [3]”由数字组成。我想添加第四列,使第4列的第1行=从第1行到第100列的第3列的值之和;第2行=从第2行到第101列的第3列的总和,依此类推。

基本上,在第x行,我想要table.1 [x,4] = sum(table.1 [x:x + 99,3])

任何人都知道如何添加这样的列?感谢。

1 个答案:

答案 0 :(得分:0)

一种方法是使用embed()命令。在这个例子中,你的“第3列”在data.frame中被命名为“a”,我正在添加一个名为“b”的列,使得dd $ b [x]< -sum(dd $ a [x: (x + 4-1)])所以我只是使用N = 4而不是N = 100的距离来简化。

dd<-data.frame(a=c(1,3,6,4,2,4,6,7,8,1))
N<-4
dd$b<-rowSums(embed(c(dd$a, rep.int(0,N-1)), N))

请注意,我填充了dd $ a向量的末尾,这样当范围“离开结束”时,我认为这些值为0。