繁体   English   中英

如何根据R中另外两列的分组来标准化列中的值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM