dplyr中的表和group_by

时间:2017-02-05 11:58:07

标签: r dplyr

a<-data_frame(id=c(rep("A",100),rep("B",78),rep("C",50)),
              vall=c(rep("x",100),rep("y",78),rep("x",50)),
              val=runif(228))

现在,我希望得到以下输出:

a2<-a %>% group_by(id) %>% count(vall)
table(a2$vall)

但是,我更喜欢有一个oneliner而不必创建a2。有这样做的聪明方法吗?

3 个答案:

答案 0 :(得分:1)

这样可以获得所需的输出,而无需创建新表或使用表函数。但是输出布局略有不同:

library(tidyverse)
a %>% group_by(id) %>% count(vall) %>% group_by(vall) %>% count()

这有帮助吗?

答案 1 :(得分:1)

以下是data.table

的单行班
library(data.table)
setDT(a)[, .N, .(id, vall)][, .N , vall]

答案 2 :(得分:1)

Akruns回答很好,但问题是dplyr。我刚刚在评论部分粘贴了备选方案,以确保完整性。

a %>% count(vall, id) %>% {table(.$vall)}

count(a, vall, id) %>% count(vall)