如何将没有缺失值的列名从 R 数据帧中摘取出来?


可以借助 colnames 函数和 complete.cases 函数来摘取没有缺失值的列名。complete.cases 函数将摘取没有缺失值的列,然后 colnames 只会摘取那些列名。

示例 1

考虑以下数据帧 −

 实时演示

x1<−sample(c(NA,1,0),20,replace=TRUE)
x2<−rpois(20,5)
x3<−sample(c(NA,5,10),20,replace=TRUE)
df1<−data.frame(x1,x2,x3)
df1

输出

   x1  x2 x3
1  1  1  5
2  NA 9 NA
3  0  5  5
4  NA 3 NA
5  0  2 10
6  NA 4 10
7  0  4 NA
8  NA 5  5
9  0  3 10
10 1  1  5
11 0  2  5
12 1  2 10
13 1  7 10
14 NA 8  5
15 1  1 NA
16 NA 3 NA
17 0  9  5
18 0  5  5
19 1  7 NA
20 1  4 10

摘取没有缺失值的列名 −

colnames(df1)[complete.cases(t(df1))]

输出

[1] "x2"

示例 2

 实时演示

y1<−letters[1:20]
y2<−sample(c(NA,"A","B","C"),20,replace=TRUE)
y3<−sample(c(NA,rnorm(5)),20,replace=TRUE)
df2<−data.frame(y1,y2,y3)
df2

输出

   y1  y2  y3
1 a A 1.2176106
2 b A NA
3 c A 0.7633109
4 d <NA> −0.3289873
5 e C 0.7633109
6 f C −0.3289873
7 g C −0.9952887
8 h <NA> 1.2176106
9 i B 1.2176106
10 j <NA> −0.9952887
11 k <NA> NA
12 l A 0.6808376
13 m B 0.7633109
14 n B −0.9952887
15 o C 0.7633109
16 p A NA
17 q C 1.2176106
18 r C −0.9952887
19 s A 0.7633109
20 t B 1.2176106

摘取没有缺失值的列名 −

示例

colnames(df2)[complete.cases(t(df2))]

输出

[1] "y1"

更新日期: 2021-02-05

344 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.