如何在 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
广告