[英]How to standardize values in a column based on grouping by two other columns in R?
我确信这是一件非常简单的事情,但我对R来说很新。
我有三个专栏,一个是我需要标准化的值,一个是年龄组,另一个是性别。 我想要一个新的专栏,其中标准化是按年龄组和性别进行的,例如18-28岁的女性与18-28岁的男性有不同的分数。
R def函数(foo):print(foo)
agegroup gender value
1 68-90 M 0.55140187
2 38-48 M 0.93333333
3 18-28 F 0.43283582
4 0-18 F 0.00001000
5 0-18 M 0.00001000
6 28-38 F 0.04081633
7 18-28 F 0.37837838
8 28-38 M 0.57142857
9 28-38 F 0.34183673
10 18-28 F 0.37804878
11 28-38 M 0.53571429
12 0-18 M 0.00001000
我尝试过使用dplyr
df %>% group_by(agegroup, gender) %>% mutate(scaled = scale(values))
分组不是按性别和年龄组进行的。 我想我必须使用总结,但我不知道如何。
如果这很简单或没有很好地解释,我很抱歉,因为我说我对此很新。 谢谢你的帮助!
你所做的似乎是正确的。 您不能使用summarise()
因为它返回单个值而不是向量。
根据您的问题,我不确定您是否要缩放每个组的值或查找每个组的值总和。 我对这两个案例都进行了抽样。
# Sample data
age sex values
1 <10 M 1
2 <10 M 2
3 >10 F 3
4 >10 F 4
5 >10 M 5
# Scaling value
df %>% group_by(age, sex) %>% mutate(std_value = scale(values))
age sex values std_value
<fct> <fct> <dbl> <dbl>
1 <10 M 1 -0.707
2 <10 M 2 0.707
3 >10 F 3 -0.707
4 >10 F 4 0.707
5 >10 M 5 NaN
# Sum of values
df %>% group_by(age, sex) %>% mutate(sum_value = sum(values))
age sex values sum_value
<fct> <fct> <dbl> <dbl>
1 <10 M 1 3
2 <10 M 2 3
3 >10 F 3 7
4 >10 F 4 7
5 >10 M 5 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.