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
我有这样的数据集。
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