R连接相同的行并计算平均值

时间:2016-01-04 12:51:29

标签: r join dataframe

我有一个如下所示的数据框:

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)

但它删除了值而不是相同行的平均值。

3 个答案:

答案 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))