반응형
NA 만 포함하는 열을 삭제하는 방법은 무엇입니까?
모든 NA 값이있는 일부 열을 포함하는 data.frame이 있는데 data.frame에서 어떻게 삭제할 수 있습니까?
기능을 사용할 수 있습니까?
na.omit(...)
추가 인수를 지정 하시겠습니까?
한 가지 방법 :
df[, colSums(is.na(df)) != nrow(df)]
열의 NA 수가 행 수와 같으면 완전히 NA 여야합니다.
또는 유사하게
df[colSums(!is.na(df)) > 0]
다음은 dplyr 솔루션입니다.
df %>% select_if(~sum(!is.na(.)) > 0)
제거 할 것처럼 seeems 만 에 열 ALL NA
해야 할 일부 행과 열을 떠나들 NA
들. 나는 이것을 할 것입니다 (그러나 효율적인 벡터화 된 soution이 있다고 확신합니다.
#set seed for reproducibility
set.seed <- 103
df <- data.frame( id = 1:10 , nas = rep( NA , 10 ) , vals = sample( c( 1:3 , NA ) , 10 , repl = TRUE ) )
df
# id nas vals
# 1 1 NA NA
# 2 2 NA 2
# 3 3 NA 1
# 4 4 NA 2
# 5 5 NA 2
# 6 6 NA 3
# 7 7 NA 2
# 8 8 NA 3
# 9 9 NA 3
# 10 10 NA 2
#Use this command to remove columns that are entirely NA values, it will elave columns where only some vlaues are NA
df[ , ! apply( df , 2 , function(x) all(is.na(x)) ) ]
# id vals
# 1 1 NA
# 2 2 2
# 3 3 1
# 4 4 2
# 5 5 2
# 6 6 3
# 7 7 2
# 8 8 3
# 9 9 3
# 10 10 2
NA
값 이있는 열을 제거하려는 경우 all
위 의 명령을로 변경하면 됩니다 any
.
또 다른 옵션은 janitor
패키지입니다.
df <- remove_empty_cols(df)
https://github.com/sfirke/janitor
직관적 인 스크립트 : dplyr::select_if(~!all(is.na(.)))
. 말 그대로 모든 요소가없는 열만 유지합니다. (모든 요소 결측 열 삭제).
> df <- data.frame( id = 1:10 , nas = rep( NA , 10 ) , vals = sample( c( 1:3 , NA ) , 10 , repl = TRUE ) )
> df %>% glimpse()
Observations: 10
Variables: 3
$ id <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
$ nas <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
$ vals <int> NA, 1, 1, NA, 1, 1, 1, 2, 3, NA
> df %>% select_if(~!all(is.na(.)))
id vals
1 1 NA
2 2 1
3 3 1
4 4 NA
5 5 1
6 6 1
7 7 1
8 8 2
9 9 3
10 10 NA
다른 옵션 Filter
Filter(function(x) !all(is.na(x)), df)
참고 : @Simon O'Hanlon의 게시물 데이터.
참고 URL : https://stackoverflow.com/questions/15968494/how-to-delete-columns-that-contain-only-nas
반응형
'Development Tip' 카테고리의 다른 글
Mongoid 설치 후 액티브 레코드 생성기를 사용하십니까? (0) | 2020.11.09 |
---|---|
Elastic Beanstalk에서 https를 강제하는 방법은 무엇입니까? (0) | 2020.11.09 |
PIL 오류 정보 — IOError : 디코더 zip을 사용할 수 없습니다. (0) | 2020.11.09 |
32/64 비트 또는 CPU 용 C # 컴파일? (0) | 2020.11.09 |
Scala에서 한 번에 여러 예외 잡기 (0) | 2020.11.09 |