如何在数据框的所有列上应用功能

时间:2019-06-12 07:41:36

标签: r dataframe apply

我有一个如下数据框:

a b c d e
1 2 3 1 1
2 3 0 1 1 
3 4 2 1 1
4 5 0 1 2
5 0 7 1 2

我想为列e中的每个唯一值求和。 所以我的输出应该是:

a b c d e
6 9 5 3 1
9 5 7 2 2 

我该怎么办?

1 个答案:

答案 0 :(得分:2)

使用by

cbind(do.call(rbind, by(d[-5], d$e, colSums)), e=unique(d$e))
#   a b c d e
# 1 6 9 5 3 1
# 2 9 5 7 2 2

或使用aggregate

aggregate(. ~ e, d, FUN=sum)
#   e a b c d
# 1 1 6 9 5 3
# 2 2 9 5 7 2

数据

d <- structure(list(a = 1:5, b = c(2L, 3L, 4L, 5L, 0L), c = c(3L, 
0L, 2L, 0L, 7L), d = c(1L, 1L, 1L, 1L, 1L), e = c(1L, 1L, 1L, 
2L, 2L)), row.names = c(NA, -5L), class = "data.frame")