如何在R语言中根据列中的空值删除数据框的行?
有时数据会错误地输入系统,这就是为什么在进行数据分析之前必须仔细进行数据清洗的原因。如果数据收集者或样本单元找不到合适的问题选项,则可能会输入空格作为答案。如果问卷设计不当或错误地填写空格,也会发生这种情况。此外,如果我们有分类变量,则控制类别可能会用空格填充,或者我们可能希望保留一个空格类别以供以后使用新的类别。无论原因是什么,分析师都会面临此类问题。这些空格实际上是通过在计算机上使用空格键插入的。因此,如果数据框的任何列包含空值,则可以使用单方括号的子集删除这些行。
示例1
考虑以下数据框
> set.seed(24) > x1<-sample(c(" ",1:5),20,replace=TRUE) > x2<-rnorm(20,4,1.25) > df1<-data.frame(x1,x2) > df1
输出
x1 x2 1 2 3.413674 2 1 3.581267 3 2 5.920315 4 4 4.762493 5 1 4.645420 6 5 3.907114 7 1 3.243554 8 1.862944 9 3 3.664134 10 3.189261 11 3.882362 12 4 3.893074 13 4 4.149414 14 3.854630 15 4 2.820216 16 4 3.957828 17 3 3.268216 18 4 4.766064 19 1 5.896403 20 4.821726
删除包含空值的行
示例
> df1[!df1$x1==" ",]
输出
x1 x2 1 2 3.413674 2 1 3.581267 3 2 5.920315 4 4 4.762493 5 1 4.645420 6 5 3.907114 7 1 3.243554 9 3 3.664134 12 4 3.893074 13 4 4.149414 15 4 2.820216 16 4 3.957828 17 3 3.268216 18 4 4.766064 19 1 5.896403
示例2
> y1<-sample(c(" ",rpois(5,1)),20,replace=TRUE) > y2<-rpois(20,5) > df2<-data.frame(y1,y2) > df2
输出
y1 y2 1 1 2 2 0 4 3 3 4 10 5 0 6 6 0 5 7 0 7 8 0 3 9 1 1 10 1 6 11 2 7 12 2 5 13 0 5 14 3 15 0 5 16 0 3 17 1 4 18 0 4 19 2 2 20 14
删除包含空值的行
示例
> df2[!df2$y1==" ",]
输出
y1 y2 1 1 2 2 0 4 5 0 6 6 0 5 7 0 7 8 0 3 9 1 1 10 1 6 11 2 7 12 2 5 13 0 5 15 0 5 16 0 3 17 1 4 18 0 4 19 2 2
广告