gpt4 book ai didi

r - dplyr:如何处理多个值

转载 作者:行者123 更新时间:2023-12-04 17:07:52 25 4
gpt4 key购买 nike

我有一个数据框,它在相同的分钟内返回 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))])

我越来越:

Error: expecting a single value



我想要像下面这样的输出。
    xxx  yyyy Topcomp
<int> <int> <fctr>
1 1 1 aaa,bbb
2 2 0 ddd

最佳答案

你应该做这个:

final= df %>%
group_by(xxx,yyyy) %>%
summarise(Topcomp=toString(Company[c(which(min(cnt)==cnt))]))
##Source: local data frame [2 x 3]
##Groups: xxx [?]
##
## xxx yyyy Topcomp
## <int> <int> <chr>
##1 1 1 aaa, bbb
##2 2 0 ddd

您收到错误是因为 which返回两个值,以便您的子集 Companysummarise 时有两个值需要一个值。 toString类似于 pastecollapse=","因为它将两个值折叠成一个由逗号分隔的字符串。

此外,正如阿利斯泰尔在他对另一个答案的评论中指出的那样,您不需要 cwhich ,所以这可以简化为:
final= df %>%
group_by(xxx,yyyy) %>%
summarise(Topcomp=toString(Company[min(cnt)==cnt]))

关于r - dplyr:如何处理多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39499369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com