【发布时间】:2017-01-22 18:53:10
【问题描述】:
我有一个数据框,它在同一分钟内返回 2 个组。如何处理才能达到我的预期输出?
df<- read.table(header=TRUE,
text="
Company xxx yyyy zzzz cnt
abc 1 1 1 20
aaa 1 1 2 3
bbb 1 1 1 3
ddd 2 0 2 100
")
我试过下面的代码
final= df %>%
group_by(xxx,yyyy) %>%
summarise(Topcomp=Company[c(which(min(cnt)==cnt))])
我得到:
错误:需要单个值
我想要如下所示的输出。
xxx yyyy Topcomp
<int> <int> <fctr>
1 1 1 aaa,bbb
2 2 0 ddd
【问题讨论】:
-
最灵活的解决方案是列表列,即
df %>% group_by(xxx, yyyy) %>% summarise(Topcomp = list(Company[cnt == min(cnt)])),尽管它们需要一些练习才能使用。 -
另外,你可以删除
c和which,正如我在下面评论的那样,因为他们在这里没有做任何事情。