我在列表 (list_df) 中存储了许多数据框,其中一个数据框有一个列 (c1),如下所示:
c1
4
6
1.5
2
3
7.5
1
9
我想计算每两行的总和,并在每个交替行中添加该值,并在其间留一个空白:
输出:
c1 c2
4
6 10
1.5
2 3.5
3
7.5 10.5
1
9 10
现在我有一个代码来创建 c1 列中每两行的总和
for(i in seq_along(list_df)){
list_df[[i]]$c2<-
rowsum(list_df[[i]][,1], as.integer(gl(nrow(list_df[[i]]), 2, nrow(list_df[[i]]))))
}
但是它抛出了一个错误,因为在这种情况下 c1 的长度是 8,但新创建的列 c2 的长度是 4。如何修改此代码,将新创建的列 c2 的值插入到交替行中通过留下空白?
谢谢
您可以使用
df = data.frame(c1 = c(4,6,1.5,2,3,7.5,1,9))
df$c2 = NA
df$c2[c(F,T)] = colSums(matrix(df$c1, 2))
# c1 c2
# 1 4.0 NA
# 2 6.0 10.0
# 3 1.5 NA
# 4 2.0 3.5
# 5 3.0 NA
# 6 7.5 10.5
# 7 1.0 NA
# 8 9.0 10.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句