如何删除包含 R 数据框中所有列的编码缺失值的行?
有时对缺失值进行编码,当我们在不替换这些缺失值的情况下进行分析时,分析结果变得有点难以解释,尤其是第一次阅读的读者很难理解。
因此,我们可能想要删除包含编码缺失值的行。为此,我们可以用NA替换编码的缺失值,然后用NA替换行,如下面给出的示例所示。
示例1
以下代码段创建一个数据框,如果缺失值被编码为1-
x1<-rpois(20,1) x2<-rpois(20,1) df1<-data.frame(x1,x2) df1
创建以下数据框-
x1 x2 1 1 0 2 1 2 3 1 3 4 1 1 5 0 1 6 0 1 7 1 0 8 0 1 9 2 1 10 1 2 11 0 3 12 1 0 13 1 2 14 2 2 15 0 0 16 2 3 17 1 1 18 2 0 19 0 0 20 1 1
要删除包含R数据框中所有列的编码缺失值的行,请将以下代码添加到上述代码段中-
x1<-rpois(20,1) x2<-rpois(20,1) df1<-data.frame(x1,x2) df1[df1==1]<-NA df1输出结果
如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出:-
x1 x2 1 NA 0 2 NA 2 3 NA 3 4 NA NA 5 0 NA 6 0 NA 7 NA 0 8 0 NA 9 2 NA 10 NA 2 11 0 3 12 NA 0 13 NA 2 14 2 2 15 0 0 16 2 3 17 NA NA 18 2 0 19 0 0 20 NA NA
要删除包含R数据框中所有列的编码缺失值的行,请将以下代码添加到上述代码段中-
df1[rowSums(is.na(df1))<ncol(df1),]输出结果
如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出:-
x1 x2 1 NA 0 2 NA 2 3 NA 3 5 0 NA 6 0 NA 7 NA 0 8 0 NA 9 2 NA 10 NA 2 11 0 3 12 NA 0 13 NA 2 14 2 2 15 0 0 16 2 3 18 2 0 19 0 0
示例2
以下代码段创建一个数据框,如果缺失值被编码为99-
y1<-sample(c(1,99),20,replace=TRUE) y2<-sample(c(5,99),20,replace=TRUE) df2<-data.frame(y1,y2) df2
创建以下数据框-
y1 y2 1 99 5 2 99 5 3 99 5 4 1 99 5 1 99 6 1 5 7 1 99 8 99 99 9 99 99 10 99 99 11 99 99 12 99 5 13 1 99 14 99 5 15 99 5 16 99 99 17 99 5 18 99 99 19 99 99 20 99 5
要删除包含R数据框中所有列的编码缺失值的行,请将以下代码添加到上述代码段中-
y1<-sample(c(1,99),20,replace=TRUE) y2<-sample(c(5,99),20,replace=TRUE) df2<-data.frame(y1,y2) df2[df2==99]<-NA df2输出结果
如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出:-
y1 y2 1 NA 5 2 NA 5 3 NA 5 4 1 NA 5 1 NA 6 1 5 7 1 NA 8 NA NA 9 NA NA 10 NA NA 11 NA NA 12 NA 5 13 1 NA 14 NA 5 15 NA 5 16 NA NA 17 NA 5 18 NA NA 19 NA NA 20 NA 5
要删除包含R数据框中所有列的编码缺失值的行,请将以下代码添加到上述代码段中-
df2[rowSums(is.na(df2))<ncol(df2),]输出结果
如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出:-
y1 y2 1 NA 5 2 NA 5 3 NA 5 4 1 NA 5 1 NA 6 1 5 7 1 NA 12 NA 5 13 1 NA 14 NA 5 15 NA 5 17 NA 5 20 NA 5