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。有这样做的聪明方法吗?
答案 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)