如何从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