大家好,我正在尝试解决 R 中的一个小问题。我想计算 R 中数据帧中行之间的差异。我的数据帧如下所示:
df <- data.frame(ID=1:8, x2=8:1, x3=11:18, x4=c(2,4,10,0,1,1,9,12))
我想创建一个名为 的新列diff.var。该列保存变量中各行的差异结果。一种可能的解决方案是使用diff()函数。当我使用这个函数时,我得到了这个:
diff(df$x4)
[1]   2   6 -10   1   0   8   3
这工作正常,但是当我尝试使用我的数据框应用时,df$diff.var=diff(df$x4)我得到了这个:
Error in `$<-.data.frame`(`*tmp*`, "diff.var", value = c(2, 6, -10, 1,  : 
  replacement has 7 rows, data has 8
由于第一行没有前一行来计算差异,因此我想将其设置为零。我想要得到这样的东西:
ID  x2  x3  x4  diff.var
1   8   11  2   0
2   7   12  4   2
3   6   13  10  6
4   5   14  0   -10
5   4   15  1   1
6   3   16  1   0
7   2   17  9   8
8   1   18  12  3
diff.var由于该元素没有前一个元素,因此第一个元素为零。我想构建一个函数来将第一个元素设置为零diff.var,这使得下一行产生差异。我希望创建一个包含所有变量的新数据框,diff.var因为ID它用于后验分析diff.var。diff()不允许创建这个新变量。感谢您的帮助。
这个问题之前已经在本论坛中提出过,并且可以在其他地方找到。无论如何,按照弗兰克的建议去做
df <- data.frame(ID=1:8, x2=8:1, x3=11:18, x4=c(2,4,10,0,1,1,9,12))
df$vardiff <- c(0, diff(df$x4))
df
  ID x2 x3 x4 vardiff
1  1  8 11  2       0
2  2  7 12  4       2
3  3  6 13 10       6
4  4  5 14  0     -10
5  5  4 15  1       1
6  6  3 16  1       0
7  7  2 17  9       8
8  8  1 18 12       3
| 归档时间: | 
 | 
| 查看次数: | 6774 次 | 
| 最近记录: |