programing

특정 NA 열이 포함된 행 생략

itmemos 2023. 6. 26. 21:05
반응형

특정 NA 열이 포함된 행 생략

생략하는 방법을 알고 싶습니다.NA데이터 프레임의 값을 입력할 수 있습니다.

예를들면,

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))

하지만 저는 단지 데이터를 생략하고 싶습니다.y이라NA따라서 결과는 다음과 같아야 합니다.

  x  y  z
1 1  0 NA
2 2 10 33

na.omit모든 행에 포함된 모든 행을 삭제하는 것 같습니다.NA.

누가 이 간단한 질문에서 나를 도와줄 수 있습니까?

하지만 지금 질문을 바꾸면 다음과 같습니다.

DF <- data.frame(x = c(1, 2, 3,NA), y = c(1,0, 10, NA), z=c(43,NA, 33, NA))

생략할 경우에만x=na또는z=na어디에 둘 수 있습니까?|기능하고 있습니까?

사용하다is.na

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))
DF[!is.na(DF$y),]

해들리의tidyr방금 이 놀라운 기능을 얻었습니다.drop_na

library(tidyr)
DF %>% drop_na(y)
  x  y  z
1 1  0 NA
2 2 10 33

당신은 사용할 수 있습니다.complete.cases다음과 같이 기능하고 함수에 넣습니다.

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))

completeFun <- function(data, desiredCols) {
  completeVec <- complete.cases(data[, desiredCols])
  return(data[completeVec, ])
}

completeFun(DF, "y")
#   x  y  z
# 1 1  0 NA
# 2 2 10 33

completeFun(DF, c("y", "z"))
#   x  y  z
# 2 2 10 33

편집: 행만 반환하고 행은 반환하지 않음NAs

하나 이상의 행을 가진 모든 행을 제거하려는 경우NA어떤 열이든, 그냥 사용하세요.complete.cases직하 기능:

DF[complete.cases(DF), ]
#   x  y  z
# 2 2 10 33

아니면 만약에completeFun워크플로우에 이미 포함되어 있습니다 ;)

completeFun(DF, names(DF))

'부분 집합' 사용

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))
subset(DF, !is.na(y))

사용할 수 있습니다.na.omit위해서data.table:

na.omit(data, cols = c("x", "z"))

두 개의 특정 열 중 하나에 다음이 포함된 경우<NA>.

DF[!is.na(DF$x)&!is.na(DF$z),]

사용해 보십시오.

cc=is.na(DF$y)
m=which(cc==c("TRUE"))
DF=DF[-m,]

사용해 보십시오.

DF %>% t %>% na.omit %>% t

데이터 프레임을 전치하고 전치 이전의 '열'이었던 null 행을 생략한 다음 다시 전치합니다.

업데이트하려면, atidyverse로 접근.dplyr:

library(dplyr)

your_data_frame %>% 
  filter(!is.na(region_column))

사용자 지정 함수를 만들 필요가 없습니다.complete.cases특정 열에 NA가 있는 행을 제거합니다.다음은 재현 가능한 예입니다.

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))
DF
#>   x  y  z
#> 1 1  0 NA
#> 2 2 10 33
#> 3 3 NA 22
DF[complete.cases(DF$y),]
#>   x  y  z
#> 1 1  0 NA
#> 2 2 10 33

repref v2.0.2를 사용하여 2022-08-27에 생성됨

보시다시피 특정 열에 NA가 있는 행이 제거되었습니다.

언급URL : https://stackoverflow.com/questions/11254524/omit-rows-containing-specific-column-of-na

반응형