我有一个如下所示的数据框:
data<-data.frame(y=c(1,1,2,2,3,4,5,5),x=c(5,5,10,10,5,10,5,5))
y x
1 1 5
2 1 5
3 2 10
4 2 30
5 3 5
6 4 10
7 5 4
8 5 8
如何合并y列中具有相同值的行,并将x列值修改为它们的平均值。
我想要这样的事情:
y x
1 1 5
2 2 20
3 3 5
4 4 10
7 5 6
我正在尝试:
unique(data)
但它删除了值而不是相同行的平均值。
答案 0 :(得分:3)
使用dplyr
很容易。像这里:
library("dplyr")
data %>%
group_by(y) %>%
summarise(x=mean(x))
答案 1 :(得分:2)
我们可以使用aggregate
aggregate(x~y, data, mean)
答案 2 :(得分:1)
用户plyr。
# Create dummy data.
nel = 30
df <- data.frame(x = round(5*runif(nel)), y= round(10*runif(nel)))
# Summarise means
require(plyr)
df$x <- as.factor(df$x)
res <- ddply(df, .(x), summarise, mu=mean(y))