有时,数据没有正确输入到系统中,这就是我们在进行数据清洁之前必须谨慎进行分析的原因。如果数据收集者或被抽样单位未为该问题找到合适的选项,则可能将其输入空白。如果问卷设计不当或错误填写空白,也会发生这种情况。另外,如果我们具有分类变量,则控件类别可能会填充空白,或者我们可能希望有一个空白类别以在以后使用新的类别。无论背后的原因是什么,分析师都将面临此类问题。这些空格实际上是通过在计算机上使用空格键插入的。因此,如果数据框的任何列均具有空白值,则可以通过使用带有单个方括号的子集来删除那些行。
请看以下数据帧:
> 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
> 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