2

例: 多くの個人と 3 つの変数 (年 (整数)、性別 (因子: 男性/女性)、組合 (因子: はい/いいえ) を含むデータ フレーム)。年と性別から組合員になる確率を計算したいと思います。私は通常、aggregate() でこれを行います。私はこれをいつもやっていますか?dplyrでそれを行うための短くて速い方法を探しています.

よろしく、ピーター

4

2 に答える 2

5

dplyr@droopyの答えに相当するものは次のとおりです。

tbl_df( x ) %.%
  group_by( year, gender ) %.%
  summarise( P = mean(union == "yes") )

Source: local data frame [8 x 3]
Groups: year

  year gender   P
1 2001 female 1.0
2 2001   male 0.5
3 2002 female 0.5
4 2002   male 0.0
5 2003 female 0.0
6 2003   male 0.5
7 2004 female 0.5
8 2004   male 0.0

...そして完全を期すために、data.table解決策も:

as.data.table(x)[ , list( P = mean( union == "yes" ) ), by = list( year, gender )  ]

   year gender   P
1: 2001   male 0.5
2: 2001 female 1.0
3: 2002   male 0.0
4: 2002 female 0.5
5: 2003   male 0.5
6: 2003 female 0.0
7: 2004   male 0.0
8: 2004 female 0.5
于 2014-04-03T14:03:57.960 に答える
1

そんな感じ?

x <- data.frame(year=rep(2001:2004, each=4), gender=rep(c("male", "female"), 8), union=sample(c("yes", "no"), 16, rep=T))
ddply(x, .(year, gender), summarize, P=mean(union=="yes"))
于 2014-04-03T13:56:26.330 に答える