[r] 데이터 프레임의 선택한 열에서 NA (결측) 값을 포함하는 행의 하위 집합

CSV 파일의 데이터 프레임이 있습니다. 데이터 프레임 DF에는 관찰 된 값이 포함 된 열과 VaR2측정이 수행 된 날짜가 포함 된 열 ( )이 있습니다. 날짜가 기록되지 않은 경우 CSV 파일에는 NA누락 된 데이터에 대한 값이 포함 됩니다.

Var1  Var2
10   2010/01/01
20   NA
30   2010/03/01

하위 집합 명령을 사용 하여 열 ( ) new_DFNA'값 이있는 행만 포함 하도록 새 데이터 프레임을 정의하려고 VaR2합니다. 주어진 예에서 행 2 만 새 DF.

명령

new_DF<-subset(DF,DF$Var2=="NA") 

작동하지 않으면 결과 데이터 프레임에 행 항목이 없습니다.

원본 CSV 파일에서 값 NA이와 교환되는 NULL경우 동일한 명령이 원하는 결과를 생성합니다 new_DF<-subset(DF,DF$Var2=="NULL")..

문자열의 값 NA이 원본 CSV 파일에 제공된 경우이 방법을 어떻게 작동시킬 수 있습니까?



답변

결 측값을 테스트하기 위해 == ‘NA’를 사용하지 마십시오. is.na()대신 사용하십시오 . 이렇게해야합니다.

new_DF <- DF[rowSums(is.na(DF)) > 0,]

또는 특정 열을 확인하려는 경우에도 사용할 수 있습니다.

new_DF <- DF[is.na(DF$Var),]

NA 문자 값이있는 경우 먼저 실행하십시오.

Df[Df=='NA'] <- NA

결 측값으로 대체합니다.


답변

NA는 R의 특수 값입니다. NA 값을 “NA”문자열과 혼동하지 마십시오. 데이터를 가져온 방법에 따라 “NA”및 “NULL”셀의 유형이 다양 할 수 있습니다 (기본 동작은 “NA”문자열을 NA 값으로 변환하고 “NULL”문자열을 그대로 두는 것입니다).

read.table () 또는 read.csv ()를 사용하는 경우 깨끗한 데이터 가져 오기를 수행하기 위해 “na.strings”인수를 고려해야하며 항상 실제 R NA 값으로 작업해야합니다.

예, “NULL”및 “NA”셀 모두에서 작업 :

DF <- read.csv("file.csv", na.strings=c("NA", "NULL"))
new_DF <- subset(DF, is.na(DF$Var2))


답변

complete.cases제공 TRUE행의 모든 값이 없을 때NA

DF[!complete.cases(DF), ]


답변

new_data <- data %>% filter_all(any_vars(is.na(.))) 

이렇게 new_data하면 누락 된 값만 있는 새 데이터 프레임 ( ) 이 생성 됩니다.

누락 된 관측치 (NA)가있는 일부 열이 있기 때문에 나중에 삭제할 수있는 값을 추적하는 것이 가장 좋습니다.


답변

이것을 변경하십시오 :

new_DF<-dplyr::filter(DF,is.na(Var2)) 


답변

NA 데이터가있는 모든 행을 인쇄합니다.

tmp <- data.frame(c(1,2,3),c(4,NA,5));
tmp[round(which(is.na(tmp))/ncol(tmp)),]


답변