R - 使用 DPLYR 按条件插补缺失值



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

例如,如果"患者A - 男性"在疼痛中缺失值,则缺失值将被替换为男性疼痛的平均值。

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)))

它有两个问题。

1(编码有点乱。

2(它不起作用。出现错误。也许,%>%mean代码似乎有问题。

Warning message:
In mean.default(., pain, na.rm = TRUE) :
argument is not numeric or logical: returning NA

有没有更好的方法来用条件插补缺失值?

您的代码不起作用,因为您不仅必须添加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变量可能会更好。

相关内容

  • 没有找到相关文章

最新更新