【问题标题】:impute missing value by condition with dplyr使用 dplyr 按条件估算缺失值
【发布时间】:2019-12-28 11:58:28
【问题描述】:

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

例如,如果“患者 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) 它不起作用。出现错误。或许,%&gt;%mean 代码似乎有问题。

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

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

【问题讨论】:

    标签: r dplyr imputation


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-06-19
      • 2014-04-12
      • 2016-11-18
      • 2019-08-16
      • 2015-08-15
      • 2019-06-09
      • 1970-01-01
      • 2021-11-08
      相关资源
      最近更新 更多