【发布时间】:2019-10-15 21:23:38
【问题描述】:
我确信这是一件非常简单的事情,但我对 R 很陌生。
我有三列,一列包含我需要标准化的值,一列包含年龄组,另一列包含性别。我想要一个新列,其中按年龄组和性别进行标准化,例如 18-28 岁的女性与 18-28 岁的男性的分数不同。
R 定义函数(foo): 打印(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))
分组不是按性别和年龄组进行的。我想我必须使用summary,但我不确定如何使用。
很抱歉,如果这真的很简单或解释得不好,我说过我对此很陌生。感谢您的帮助!
【问题讨论】:
-
能否请您解释一下您的数据集,以及您要如何使用的变量?
-
试试
df %>% dplyr::group_by(agegroup, gender) %>% mutate(scaled = scale(values)) -
我无法用我自己的合成数据复制任何问题。使用您的代码,我能够毫无障碍地基于
gender和agegroup进行扩展。我首先通过gender和agegroup过滤数据帧然后缩放来检查结果,结果是一样的。您可能误解了输出吗?