我有以下示例数据:
ID GLUC TGL HDL LDL HRT MAMM SMOKE
A 88 NA 32 99 Y NA never
B NA 150 60 NA NA no never
C 110 NA NA 120 N NA NA
D NA 200 65 165 NA yes never
我需要编写一个函数,用数字变量的中位数替换缺失的数字变量。对于字符变量,我需要将丢失的值替换为字符变量出现频率最高的值。该函数有两个参数,数据帧的名称和字符向量。
我想要的使用以下功能的结果:
impute (dat=patient, varlist=c("LDL", "HRT", "MAMM"))
LDL HRT MAMM
99 Y yes
165 Y no
120 N yes
165 Y yes
150 Y yes
我已经写了这些变量,但是我很难将它们放到一个函数中。
patient$TGL[which(is.na(patient$TGL))] <- median(patient$TGL, na.rm=TRUE)
patient$TGL[which(is.na(patient$TGL))] <- which.max(patient$TGL, na.rm=TRUE)
我如何达到我想要的结果?