gpt4 book ai didi

r - dplyr::group_by() 具有多个变量但不是交集

转载 作者:行者123 更新时间:2023-12-02 20:54:54 24 4
gpt4 key购买 nike

当您group_by 多个变量时,dplyr 有助于找到这些组的交集。

例如,

mtcars %>% 
group_by(cyl, am) %>%
summarise(mean(disp))

产量

Source: local data frame [6 x 3]
Groups: cyl [?]

cyl am `mean(disp)`
<dbl> <dbl> <dbl>
1 4 0 135.8667
2 4 1 93.6125
3 6 0 204.5500
4 6 1 155.0000
5 8 0 357.6167
6 8 1 326.0000

我的问题是,有没有办法提供多个变量,但勉强总结一下?我希望输出与手动执行此操作时得到的输出一样,逐个变量。

df_1 <- 
mtcars %>%
group_by(cyl) %>%
summarise(est = mean(disp)) %>%
transmute(group = paste0("cyl_", cyl), est)

df_2 <-
mtcars %>%
group_by(am) %>%
summarise(est = mean(disp)) %>%
transmute(group = paste0("am_", am), est)

bind_rows(df_1, df_2)

以上代码产生

# A tibble: 5 × 2
group est
<chr> <dbl>
1 cyl_4 105.1364
2 cyl_6 183.3143
3 cyl_8 353.1000
4 am_0 290.3789
5 am_1 143.5308

理想情况下,语法应该是这样的

mtcars %>%
group_by(cyl, am, intersection = FALSE) %>%
summarise(est = mean(disp))

tidyverse 中是否存在类似的东西?

(附言,我发现上表中的 group 变量不整洁,因为它包含两个变量,但我保证我的目的是整洁的,好吗?: ) )

最佳答案

我猜你要找的是 tidyr 包...

gather 首先复制数据集,以便每个分组依据的因素都有 n 行; mutate 然后创建分组变量。

library(dplyr)
library(tidyr)

mtcars %>%
gather(col, value, cyl, am) %>%
mutate(group = paste(col, value, sep = "_")) %>%
group_by(group) %>%
summarise(est = mean(disp))

关于r - dplyr::group_by() 具有多个变量但不是交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40851389/

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