2016-01-04 87 views
-3

我有一個看起來像這樣的數據幀:R連接同一行,並計算平均值

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) 

但它消除的,而不是做同一行的平均數值。

+1

實際的重複數據刪除技術應該是[這](http://stackoverflow.com/questions/21982987/mean-per-group-in-a-data-框架)我想。但誰在乎,對吧?無論如何,沒有人再使用Google。 –

+1

@DavidArenburg爲什麼谷歌當這些有幫助的人會立即給你一個量身定做的答案? – Henrik

回答

3

dplyr很容易。像這裏:

library("dplyr") 

data %>% 
    group_by(y) %>% 
    summarise(x=mean(x)) 
+0

添加'y'來彙總完整輸出。即'總結(y,x =平均值(x))' –

+0

@Tal J. Levy,我認爲這不是必要的。 '你已經在那裏了。 – Marta

+0

總結後不會。 –

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)) 
2

我們可以使用aggregate

aggregate(x~y, data, mean)