使用dplyr根据条件估算缺失值

时间:2019-08-23 07:21:57

标签: r dplyr mutate imputation

我想用同性中的平均值代替缺失的值。

例如,如果“患者A-男性”的疼痛缺失值,则该缺失值将被男性疼痛的平均值替代。

window.getScene().setRoot(root);

它有两个问题。

1)编码有点混乱。

2)它不起作用。出现错误。也许,rawdata <- rawdata %>% mutate(replace_pain = ifelse(is.na(pain) & sex == "male", rawdata %>% filter(sex == "male") %>% mean(pain, na.rm = TRUE), ifelse(is.na(pain) & sex == "female", rawdata %>% filter(sex == "female") %>% mean(pain, na.rm = TRUE), pain))) 代码似乎有问题。

%>%mean

有没有更好的方法来用条件来估算缺失值?

1 个答案:

答案 0 :(得分:0)

您的代码不起作用,因为您不仅需要添加summarise(mean(pain, na.rm = TRUE)),还必须添加mean(pain, na.rm = TRUE)。您不能在数据框上使用mean

rawdata %>%
  mutate(replace_pain= ifelse(is.na(pain) & sex=="male",
                              rawdata %>% filter(sex=="male") %>% summarise(mean(pain,na.rm=TRUE)),
                              ifelse(is.na(pain) & sex=="female",
                                     rawdata %>% filter(sex=="female") %>% summarise(mean(pain,na.rm=TRUE)),
                                     pain)))

代码仍然很混乱,最好先定义一个avg_pain_femaleavg_pain_male变量。