例如,我有一个包含4列的数据框:
col1 col2 col3 col4
我想通过累加每一列来获得一个新的数据框:
col1 col1+col2 col1+col2+col3 col1+col2+col3+col4
我应该如何用R书写?
答案 0 :(得分:4)
在基数R中,您可以使用cumsum
来按行计算apply
。
使用@Henry的数据:
startdf[] <- t(apply(startdf, 1, cumsum))
startdf
# col1 col2 col3 col4
#1 1 21 321 4321
#2 4 34 234 1234
答案 1 :(得分:2)
如果这是矩阵,则可以使用rowCumsums
包中的matrixStats
所以从一个数据帧开始,然后返回一个数据帧,我想您可以尝试类似的
library(matrixStats)
startdf <- data.frame(col1=c(1,4), col2=c(20,30),
col3=c(300,200), col4=c(4000,1000))
finishdf <- as.data.frame(rowCumsums(as.matrix(startdf)))
出发
col1 col2 col3 col4
1 1 20 300 4000
2 4 30 200 1000
到
V1 V2 V3 V4
1 1 21 321 4321
2 4 34 234 1234
答案 2 :(得分:1)
R基(不像Ronak的有效或干净)[使用亨利的数据]:
data.frame(Reduce(rbind, Map(cumsum, data.frame(t(startdf)))), row.names = NULL)