r 在两列中估算缺失数据

r impute missing data in two columns

我有这样的数据集。

  ID   Yr    Month
  1    3     NA
  2    4     23
  3    NA    46
  4    1     19
  5    NA    NA

我想创建一个新专栏,Age 其中

 Case1 : Age = Year,  if Month is missing
 Case2 : Age = Year + Month/12 , if Year and Month are not missing
 Case3 : Age = Month/12 , if Year is missing
 Case4 : Age = NA, if both Year and Month are missing.

最终的预期数据集应如下所示。

  ID   Yr    Month   Age
  1    3     NA      3
  2    4     23      5.91
  3    NA    46      3.83
  4    1     19      2.58 
  5    NA    NA      NA

我可以用 30 行代码完成这个,但我正在寻找一个简单有效的解决方案来解决这个问题。任何建议,非常感谢,提前致谢。

您可以在 case_when 语句中包含条件。

library(dplyr)

df %>%
  mutate(Age = case_when(is.na(Month) & is.na(Yr) ~ NA_real_, 
                         is.na(Month) ~ as.numeric(Yr), 
                         is.na(Yr) ~ Month/12, 
                         TRUE ~ Yr + Month/12))

#  ID Yr Month      Age
#1  1  3    NA 3.000000
#2  2  4    23 5.916667
#3  3 NA    46 3.833333
#4  4  1    19 2.583333
#5  5 NA    NA       NA