2014-06-10 51 views
0

我有以下數據幀:生成表

test <- data.frame(Gender = rep(c("M","F"),5), Death = c(1981:1985), Age = c(21:30)) 

,我想知道我怎麼可以重現使用命令table,而不是ddply結果如下:

library(plyr) 
ddply(test, c("Gender", "Death"), summarise, AgeMean = mean(Age)) 
    Death AgeMean 
1 1981 23.5 
2 1982 24.5 
3 1983 25.5 
4 1984 26.5 
5 1985 27.5 

回答

2

我想你的意思是aggregate ...

aggregate(Age ~ Death , data = test , FUN = mean) 
# Death Age 
#1 1981 23.5 
#2 1982 24.5 
#3 1983 25.5 
#4 1984 26.5 
#5 1985 27.5 
+0

所以,你的意思是沒有對應這個完全使用「表」命令? – user30314

+0

@ user30314沒錯。爲什麼如此熱衷於「餐桌」? –

+1

我已經使用表格呈現了大部分信息數據,並且這種方式對我來說會更容易打印出最終結果。但謝謝你的迴應! – user30314

2

或你也可以使用summaryBydoBy包:

summaryBy(Age ~ Death,data=test,FUN=mean) 
Death Age.mean 
1981 23.5 
1982 24.5 
1983 25.5 
1984 26.5 
1985 27.5 

變量(一個或多個)的~的左邊是要執行的功能FUN=(在這種情況下mean)變量(S)和~右側的變量是您想要的新聚合級別。

0

你也可以做到這一點使用dplyr

library(dplyr) 

test %>% 
    group_by(Death) %>% 
    summarise(Age.mean = mean(Age)) 

我覺得dplyr的鏈接語法結果非常可讀的代碼,但是這是一個個人喜好。

Source: local data frame [5 x 2] 

    Death Age.mean 
1 1981  23.5 
2 1982  24.5 
3 1983  25.5 
4 1984  26.5 
5 1985  27.5