我在R中有一个数据帧,如下所示,并希望从样本平均值中排除超过2个SD的数据点。我需要按条件来做。因此,特别是,我需要按条件分组,然后从medErr的平均值中排除超过2个SD的数据点。关于如何做到这一点的任何提示(我使用整洁的诗句,但有点卡住(
谢谢!
Nr | ID | 性别 | 年龄条件平均错误医疗错误varErr||
---|---|---|---|---|
1 | 2143 | 女性19 | 原因1.589679618 | <1.545205213>>0.93076650 |
2 | 21343 | 女性19 | <1.002208099>1.009241219 | >0.45208960 |
3 | 21363 | 女性20 | 原因3.1385165872.630161424 | 5.74271903|
4 | 21363 | 女性20 | 非因果性<1.512882702>1245398206 | 1.24308910|
5 | 21368 | 女性20 | 原因-0.425156892-0.382225350 | 0.04519723|
21368 | 女性 | 20 | 非因果性0.431359690 | 0.4339679360.14884018
这样的东西怎么样:
dat %>%
group_by(Condition) %>%
mutate(out = case_when(
medErr > mean(medErr, na.rm=TRUE) + 2*sd(medErr, na.rm=TRUE) ~ 1,
medErr < mean(medErr, na.rm=TRUE) - 2*sd(medErr, na.rm=TRUE) ~ 1,
TRUE ~ 0)) %>%
filter(out == 0)