gpt4 book ai didi

r - 在 dplyr 或 tidyr 中执行类似于 rbind 的操作?

转载 作者:行者123 更新时间:2023-12-04 10:45:33 25 4
gpt4 key购买 nike

用下面的数据说,我感兴趣的问题是每个水果有多少个独特的伙伴?

我的 df:

       fruit1 fruit2
1 guava kiwi
2 lemon pear
3 pear apple
4 guava kiwi
5 pear guava
6 apple kiwi
7 banana lemon
8 lemon kiwi
9 apple banana
10 lemon guava

我正在尝试使用 dplyr 和 tidyr。为此,我认为最好使用 n_distinct()在 dplyr 中。我做了以下事情:
rbind (df %>%select(fruita=fruit1,fruitb=fruit2), 
df %>%select(fruita=fruit2,fruitb=fruit1)) %>%
group_by(fruita) %>%
summarise(Partners=n_distinct(fruitb)) %>%
arrange(desc(Partners))

这基本上复制了下面的 10 行,但切换了下半部分水果的顺序。然后,我使用 n_distinct() 计算新的第一列中的每个水果,在新的第二列中它有多少独特的伙伴水果。 .

这工作正常,但考虑到多么优雅 dplyrtidyr是,我想知道是否有更有效的方法来做到这一点,尤其是如果有一种方法可以执行 rbind例如使用这些软件包之一?

最终数据如下所示:
  fruita Partners
1 lemon 4
2 apple 3
3 guava 3
4 pear 3
5 kiwi 3
6 banana 2

再现数据:
structure(list(fruit1 = structure(c(3L, 4L, 5L, 3L, 5L, 1L, 2L, 
4L, 1L, 4L), .Label = c("apple", "banana", "guava", "lemon",
"pear"), class = "factor"), fruit2 = structure(c(4L, 6L, 1L,
4L, 3L, 4L, 5L, 4L, 2L, 3L), .Label = c("apple", "banana", "guava",
"kiwi", "lemon", "pear"), class = "factor")), .Names = c("fruit1",
"fruit2"), class = "data.frame", row.names = c(NA, -10L))

最佳答案

不确定这是否有帮助:

df %>% 
do(data.frame(fruita=unlist(.), fruitb=unlist(.[,2:1]))) %>%
group_by(fruita) %>%
summarise(Partners=n_distinct(fruitb)) %>%
arrange(desc(Partners))
#Source: local data frame [6 x 2]

# fruita Partners
# 1 lemon 4
# 2 apple 3
# 3 guava 3
# 4 pear 3
# 5 kiwi 3
# 6 banana 2

关于r - 在 dplyr 或 tidyr 中执行类似于 rbind 的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25112180/

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