如何从R中的数据帧中删除没有内容的所有变量/列?
考虑到我的数据集很大而且更复杂(更多的列和行) 作为示例,这将是一个更简单的集合:如何从R中的数据帧中删除没有内容的所有变量/列?,r,dplyr,R,Dplyr,考虑到我的数据集很大而且更复杂(更多的列和行) 作为示例,这将是一个更简单的集合: A <- rep(NA,10) B <- rep(2,10) C <- rep(NA,10) D <- rep('B',10) E <- c('NA',rep('XY',9)) dat <- data.frame(A,B,C,D,E) A B C D E 1 NA 2 NA B NA 2 NA 2 NA B XY 3 NA 2 NA B XY 4 NA
A <- rep(NA,10)
B <- rep(2,10)
C <- rep(NA,10)
D <- rep('B',10)
E <- c('NA',rep('XY',9))
dat <- data.frame(A,B,C,D,E)
A B C D E
1 NA 2 NA B NA
2 NA 2 NA B XY
3 NA 2 NA B XY
4 NA 2 NA B XY
5 NA 2 NA B XY
6 NA 2 NA B XY
7 NA 2 NA B XY
8 NA 2 NA B XY
9 NA 2 NA B XY
10 NA 2 NA B XY
A尝试使用变量索引NA
:
#Index
i1 <- apply(dat,2,function(x)length(which(is.na(x))))
i2 <- which(i1==nrow(dat))
dat <- dat[,-i2]
尝试使用带有NA
的变量索引:
#Index
i1 <- apply(dat,2,function(x)length(which(is.na(x))))
i2 <- which(i1==nrow(dat))
dat <- dat[,-i2]
您可以使用dplyr
:
library(dplyr)
dat %>%
select_if(~ !any(is.na(.)))
您可以使用dplyr
:
library(dplyr)
dat %>%
select_if(~ !any(is.na(.)))
使用colSums
+的基本R选项是.na
> dat[colSums(is.na(dat))!=nrow(dat)]
B D E
1 2 B <NA>
2 2 B XY
3 2 B XY
4 2 B XY
5 2 B XY
6 2 B XY
7 2 B XY
8 2 B XY
9 2 B XY
10 2 B XY
>dat[colSums(is.na(dat))!=nrow(dat)]
B、D、E
1.2 B
2 B XY
3 2 B XY
4 2 B XY
5 2 B XY
6 2 B XY
7 2 B XY
8 2 B XY
9 2 B XY
102B XY
使用colSums
+的基本R选项是.na
> dat[colSums(is.na(dat))!=nrow(dat)]
B D E
1 2 B <NA>
2 2 B XY
3 2 B XY
4 2 B XY
5 2 B XY
6 2 B XY
7 2 B XY
8 2 B XY
9 2 B XY
10 2 B XY
>dat[colSums(is.na(dat))!=nrow(dat)]
B、D、E
1.2 B
2 B XY
3 2 B XY
4 2 B XY
5 2 B XY
6 2 B XY
7 2 B XY
8 2 B XY
9 2 B XY
102B XY
我会做过滤(函数(x)!all(is.na(x)),dat)
,但似乎已经有一个像你这样的主题了-我会做过滤(函数(x)!all(is.na(x)),dat)
,但似乎已经有一个像你这样的主题了-