我想用同性别中的平均值替换缺失值。
例如,如果"患者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_female
并avg_pain_male
变量可能会更好。