gpt4 book ai didi

r - 创建动态分组依据

转载 作者:行者123 更新时间:2023-12-04 00:00:36 26 4
gpt4 key购买 nike

df = data.frame(
A = c(1, 4, 5, 13, 2),
B = c("Group 1", "Group 3", "Group 2", "Group 1", "Group 2"),
C = c("Group 3", "Group 2", "Group 1", "Group 2", "Group 3")
)

df %>%
group_by(B) %>%
summarise(val = mean(A))

df %>%
group_by(C) %>%
summarise(val = mean(A))

我不想为每组唯一的 group_by 编写新的代码块,我想创建一个循环遍历 df 数据框并保存结果放入列表或数据框中。

我想看看特征 A 的平均值如何在特征 BC 之间传播,而无需编写新的数据集中每个分类特征的代码块。

我试过这个:

List_Of_Groups <- map_df(df, function(i) {
df %>%
group_by(!!!syms(names(df)[1:i])) %>%
summarize(newValue = mean(A))
})

最佳答案

使用 purrrmap,您可以将您指定的代码块应用于所有字符列。基本上,您将字符变量的名称​​映射到后面的函数

purrr::map(names(df %>% select(where(is.character))), function(i) {
df %>%
group_by(!!sym(i)) %>%
summarize(newValue = mean(A))
})

输出

# [[1]]
# A tibble: 3 x 2
# B newValue
# <chr> <dbl>
# 1 Group 1 7
# 2 Group 2 3.5
# 3 Group 3 4
#
# [[2]]
# A tibble: 3 x 2
# C newValue
# <chr> <dbl>
# 1 Group 1 5
# 2 Group 2 8.5
# 3 Group 3 1.5

关于r - 创建动态分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62471927/

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