我有以下数据集:
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
我希望在任何a的情况下获取b中最常见的值和第二常见的值。如果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 中只有一个值,因此我希望输出列"second"中出现 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))] )))
但它无法正常工作,有什么建议吗?