由于列表示变量,因此我们经常会在数据框的列中找到缺失值,但我们可能还希望找到案例的缺失值(NA),以便我们可以根据案例特征而不是变量的分布来替换它们。在R中,我们可以将rowSums与apply函数一起使用。
请看以下数据帧-
set.seed(8) x1<-sample(c(NA,1,2),20,replace=TRUE) x2<-sample(c(NA,5,10),20,replace=TRUE) df1<-data.frame(x1,x2) df1
输出结果
x1 x2 1 2 10 2 1 10 3 2 5 4 2 10 5 1 5 6 2 NA 7 1 5 8 NA 10 9 NA 10 10 1 5 11 2 NA 12 2 5 13 1 NA 14 1 5 15 2 5 16 1 NA 17 NA 5 18 NA 10 19 1 5 20 2 5
在数据帧df1的行中找到NA值的频率-
df1$NA_frequency<-rowSums(apply(is.na(df1),2,as.numeric)) df1
输出结果
x1 x2 NA_frequency 1 2 10 0 2 1 10 0 3 2 5 0 4 2 10 0 5 1 5 0 6 2 NA 1 7 1 5 0 8 NA 10 1 9 NA 10 1 10 1 5 0 11 2 NA 1 12 2 5 0 13 1 NA 1 14 1 5 0 15 2 5 0 16 1 NA 1 17 NA 5 1 18 NA 10 1 19 1 5 0 20 2 5 0
让我们看另一个例子-
y1<-sample(c(NA,1),20,replace=TRUE) y2<-sample(c(NA,400),20,replace=TRUE) y3<-sample(c(NA,35),20,replace=TRUE) y4<-sample(c(NA,127),20,replace=TRUE) df2<-data.frame(y1,y2,y3,y4) df2
输出结果
y1 y2 y3 y4 1 NA NA 35 127 2 1 NA NA NA 3 1 400 35 127 4 1 NA 35 127 5 1 NA 35 127 6 NA 400 NA NA 7 1 400 NA NA 8 1 NA 35 127 9 1 400 NA 127 10 NA 400 35 127 11 NA NA 35 NA 12 NA NA NA NA 13 NA NA 35 NA 14 1 400 35 NA 15 1 NA 35 NA 16 NA 400 35 NA 17 1 NA 35 NA 18 NA 400 35 127 19 NA 400 NA NA 20 1 NA NA 127
在数据帧df2的行中找到NA值的频率-
df2$NA_frequency<-rowSums(apply(is.na(df2),2,as.numeric)) df2
输出结果
y1 y2 y3 y4 NA_frequency 1 NA NA 35 127 2 2 1 NA NA NA 3 3 1 400 35 127 0 4 1 NA 35 127 1 5 1 NA 35 127 1 6 NA 400 NA NA 3 7 1 400 NA NA 2 8 1 NA 35 127 1 9 1 400 NA 127 1 10 NA 400 35 127 1 11 NA NA 35 NA 3 12 NA NA NA NA 4 13 NA NA 35 NA 3 14 1 400 35 NA 1 15 1 NA 35 NA 2 16 NA 400 35 NA 2 17 1 NA 35 NA 2 18 NA 400 35 127 1 19 NA 400 NA NA 3 20 1 NA NA 127 2