SQL에서 빌려 오기 위해 null이 아닌 값을 기반으로 데이터 프레임의 하위 집합을 가져 오려고합니다. 같은 시도 :부분 집합()에 정의 된 값 확인
lately <- subset(data, year > 1997 & myvalue != NA)
하지만 그건 맞지 않아. 팁이나 rsters?
SQL에서 빌려 오기 위해 null이 아닌 값을 기반으로 데이터 프레임의 하위 집합을 가져 오려고합니다. 같은 시도 :부분 집합()에 정의 된 값 확인
lately <- subset(data, year > 1997 & myvalue != NA)
하지만 그건 맞지 않아. 팁이나 rsters?
subset(data, year > 1997 & !is.na(myvalue))
해야합니다. 사용중인 버전이 작동하지 않는 이유는 NA
데이터가 무엇인지 모르기 때문에 foo != NA
또는 foo == NA
은 항상 NA
입니다. is.na()
을 사용하여 NA
을 테스트하고 "NOT NA"를 원하면 !
을 사용하여이를 무효화하십시오.
예컨대 :
> dat <- data.frame(year = 1995:2000, myvalue = c(1,3,4,NA,6,10))
> dat
year myvalue
1 1995 1
2 1996 3
3 1997 4
4 1998 NA
5 1999 6
6 2000 10
> subset(dat, year > 1997 & myvalue != NA)
[1] year myvalue
<0 rows> (or 0-length row.names)
> subset(dat, year > 1997 & !is.na(myvalue))
year myvalue
5 1999 6
6 2000 10
그것은 버전이 작동하지 않는 이유에 대해 더 숙고 할 교훈이다. 절 반환의
첫 번째 부분 :
> with(dat, year > 1997)
[1] FALSE FALSE FALSE TRUE TRUE TRUE
우리는 그들이 거짓으로 어떤 추가 검사를 수행 할 필요가 없습니다 처음 3 개 요소에 대한
,하지만 우리는 최종의 두 번째 절을 확인해야 예제의 세 요소
> with(dat, year > 1997 & myvalue != NA)
[1] FALSE FALSE FALSE NA NA NA
행을 선택하지 끝낼 것이다, 따라서 제로 행 객체 반환
> with(dat, myvalue != NA)
[1] NA NA NA NA NA NA
따라서 조합 절은 반환 전술 한 바와 같이, 두번째 절은 모든 요소 NA
반환 예를 들어.
사려 깊은 반응에 감사드립니다. – Wells
데이터? "옳지 않은"정의? 우리는 마음을 읽는 독자가 아닙니다. –