[r] 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
모든 행에 any가 포함 된 것을 삭제하는 것 같습니다 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
어디 |
에서 기능을 사용할 수 있습니까?
답변
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
편집 : s 가없는 행만 반환NA
열에서 하나 이상의 행을 모두 제거 NA
하려면 complete.cases
함수를 똑바로 사용하십시오 .
DF[complete.cases(DF), ]
# x y z
# 2 2 10 33
또는 completeFun
이미 워크 플로우에 세분화되어 있다면 😉
completeFun(DF, names(DF))
답변
사용하다 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
답변
‘서브셋’사용
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"))
답변
이 시도:
cc=is.na(DF$y)
m=which(cc==c("TRUE"))
DF=DF[-m,]
답변
두 개의 특정 열 중 하나에가 포함 된 경우 행을 생략하십시오 <NA>
.
DF[!is.na(DF$x)&!is.na(DF$z),]