我试图计算每一行的列值和前一列值之间的差异,例如:
我希望代码能做到以下几点:(第2列中的值-第1列中的值)、(第3列中的值-第2列中的值)、(第4列中的值-第3列中的值)等。
对于将计算值存储在如下新表中的输出:
我已经在一小部分列上手动完成了这一操作,如下所示,但是有没有代码可以更有效地在一大部分列/行上完成这一操作
#to calculate differences
diff_new = tab_new[,2] - tab_new[,1]
diff_new2 = tab_new[,3] - tab_new[,2]
diff_new3 = tab_new[,4] - tab_new[,3]
diff_new4 = tab_new[,5] - tab_new[,4]
#to create a new table with differences
diff.table_new = cbind(diff_new,diff_new2,diff_new3,diff_new4)
4条答案
按热度按时间clj7thdc1#
一个基本R选项是
输出量
或者使用
sapply
:输出:
数据
fae0ux8s2#
diff
有滞后:nwsw7zdq3#
另一个完全矢量化的选项:
可以使用
apply
+diff
:zu0ti5jz4#
只要您的数据没有
NA
值,就可以使用data.table
和collapse
。这里我们复制原始数据(第一列除外),并通过引用修改列。
创建于2023-06-02使用reprex v2.0.2
数据