最近遇到替换NA值的问题,发现使用apply函数加上function能解决很多问题,在这里记录一下。
首先先建一个数据框,命名为data。
a<-c(1,2,3,4,5,NA,7,8,9)
b<-c(2,4,2,NA,4,7,8,9,1)
c<-c(NA,3,6,8,9,1,3,5,7)
data<-data.frame(a,b,c)
data长这个样子
接下来,我们用0替换NA
data_1<-data.frame(apply(data,2,function(x){
x[is.na(x)] = 0;x}))
data_1长这个样子
接下来,我们用均值替换NA
data_2<-data.frame(apply(data,2,function(x){
x[is.na(x)] = mean(x,na.rm = T);x}))
data_2长这个样子
以此类推,用列最大值替换NA
data_3<-data.frame(apply(data,2,function(x){
x[is.na(x)] = max(x,na.rm = T);x}))
用列最小值替换NA
data_4<-data.frame(apply(data,2,function(x){
x[is.na(x)] = min(x,na.rm = T);x}))
用列中位数替换NA
data_5<-data.frame(apply(data,2,function(x){
x[is.na(x)] = median(x,na.rm = T);x}))