gpt4 book ai didi

r - 使用 cut() 和 group_by()

转载 作者:行者123 更新时间:2023-12-05 01:10:06 24 4
gpt4 key购买 nike

我试图将一个连续变量划分为区间,根据观察组改变切割值。已经有similar question asked previously ,但它只处理了一个列,而我想找到一个可以推广以与他一起工作的解决方案 group_by()函数在 dplyr ,它允许为分组选择多个列。

这是一个基本的示例数据集:

df <- data.frame(group = c(rep("Group 1", 10),
rep("Group 2", 10)),
subgroup = c(1,2),
value = 1:20)

创建:
     group subgroup value
1 Group 1 1 1
2 Group 1 2 2
3 Group 1 1 3
4 Group 1 2 4
5 Group 1 1 5
6 Group 1 2 6
7 Group 1 1 7
8 Group 1 2 8
9 Group 1 1 9
10 Group 1 2 10
11 Group 2 1 11
12 Group 2 2 12
13 Group 2 1 13
14 Group 2 2 14
15 Group 2 1 15
16 Group 2 2 16
17 Group 2 1 17
18 Group 2 2 18
19 Group 2 1 19
20 Group 2 2 20

出于这个问题的目的,假设我们要将组拆分为值 12 ,取决于该值是高于还是低于组的平均值。分组应该由 group 完成和 subgroup ,预期输出为:
     group subgroup value cut
1 Group 1 1 1 1
2 Group 1 2 2 1
3 Group 1 1 3 1
4 Group 1 2 4 1
5 Group 1 1 5 1
6 Group 1 2 6 2
7 Group 1 1 7 2
8 Group 1 2 8 2
9 Group 1 1 9 2
10 Group 1 2 10 2
11 Group 2 1 11 1
12 Group 2 2 12 1
13 Group 2 1 13 1
14 Group 2 2 14 1
15 Group 2 1 15 1
16 Group 2 2 16 2
17 Group 2 1 17 2
18 Group 2 2 18 2
19 Group 2 1 19 2
20 Group 2 2 20 2

我希望得到以下输出:
df %>%
group_by(group, subgroup) %>%
# INSERT MAGIC FUNCTION TO BIN DATA

最佳答案

如果您想使用 cut ,你可以这样做:

df %>% 
group_by(group, subgroup) %>%
mutate(bin = cut(value, breaks = c(-Inf, mean(value), Inf), labels = c(1,2)))

关于r - 使用 cut() 和 group_by(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49814419/

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