【发布时间】:2020-09-20 17:40:45
【问题描述】:
我有以下数据集:
a b
1 a
1 a
1 a
1 none
2 none
2 none
2 b
3 a
3 c
3 c
3 d
4 a
我想得到 b 中任何 a 的最频繁值和 b 中任何 a 的第二频繁值。如果 b 中的两个值具有相同的频率,我对两者中的任何一个被视为“第一”或“第二”无动于衷。
在这种情况下,预期的输出是:
d2:
a first second
1 a none
2 none b
3 c a(or d, doesn't matter)
4 a NA
如您所见,a=4 在 b 中只有一个值,因此我希望在输出列“第二”中出现 NA,因为没有第二个最频繁的值。
数据:
a <- c(1,1,1,1,2,2,2,3,3,3,3,4)
b<- c("a","a", "a", "none", "none", "none", "b", "a", "c" , "c", "d","a")
d <- data.frame(a,b)
我目前尝试的是以下
d1 <- d %>% group_by(a) %>% summarize ( first =names(which.max(table(b))) , second= names(which.max(table(b)[-which.max(table(b))] )))
但它不能正常工作,有什么想法吗?
【问题讨论】:
标签: r group-by dplyr summarize