如果我有一个数据框我要添加列,我想要一列来总结它们。我不会提前知道列的名称,所以我想我需要一些能够计算列数然后总结它们的函数。
如果我的数据是这样的:
w=1:10
x=11:20
z=data.frame(w,x)
我想要z$w
和z$x
的总和。但是如果我要添加z$y
,我希望将其纳入总和中。
答案 0 :(得分:2)
您应该考虑不为总和添加列,只需在需要时调用rowSums(z)
即可。这样就无需在修改data.frame时更新列的麻烦。
现在,如果这真的是你想要的,这里有一个小函数,它将更新总和并始终将其保留为最后一列。每次对data.frame进行更改时都必须运行它:
> refresh.total <- function(df) {
+ df$total <- NULL
+ df$total <- rowSums(df)
+ return(df)
+ }
>
> z <- refresh.total(z)
> z
w x total
1 1 11 12
2 2 12 14
3 3 13 16
4 4 14 18
5 5 15 20
6 6 16 22
7 7 17 24
8 8 18 26
9 9 19 28
10 10 20 30
>
> z$y <- 2:11
> z <- refresh.total(z)
> z
w x y total
1 1 11 2 14
2 2 12 3 17
3 3 13 4 20
4 4 14 5 23
5 5 15 6 26
6 6 16 7 29
7 7 17 8 32
8 8 18 9 35
9 9 19 10 38
10 10 20 11 41
答案 1 :(得分:1)
在您完成所有列的添加后,您可以执行以下操作:
z$total <- rowSums(z)