열의 조건에 따라 데이터 프레임의 행 부분 집합/필터링
데이터 프레임 "foo"가 주어졌을 때, 예를 들어 "foo"에서 행만 선택할 수 있는 방법은 무엇입니까?foo$location = "there"
?
foo = data.frame(location = c("here", "there", "here", "there", "where"), x = 1:5, y = 6:10)
foo
# location x y
# 1 here 1 6
# 2 there 2 7
# 3 here 3 8
# 4 there 4 9
# 5 where 5 10
원하는 결과, "bar":
# location x y
# 2 there 2 7
# 4 there 4 9
다음은 크게 두 가지 접근 방식입니다.가독성 때문에 이 제품을 선호합니다.
bar <- subset(foo, location == "there")
다음을 사용하여 여러 조건을 함께 연결할 수 있습니다.&
그리고.|
복잡한 부분 집합을 만듭니다.
두 번째는 색인화 방식입니다.숫자 또는 부울 슬라이스를 사용하여 R의 행을 인덱싱할 수 있습니다.foo$location == "there"
의 벡터를 반환합니다.T
그리고.F
값의 행과 동일한 길이foo
. 조건이 참으로 반환되는 행만 반환하려면 이 작업을 수행할 수 있습니다.
foo[foo$location == "there", ]
위의 답변을 확장하기 위해 열 이름을 지정하는 대신 열을 색인화할 수도 있으며, 이는 수행하는 작업에 따라 유용할 수도 있습니다.위치가 첫 번째 필드임을 감안하면 다음과 같습니다.
bar <- foo[foo[ ,1] == "there", ]
이것은 특정 열에 대한 루프처럼 열 값에 대한 작업을 수행할 수 있기 때문에 유용합니다(행 번호도 인덱싱하여 동일하게 수행할 수 있습니다).
다음과 같은 열 범위를 지정할 수 있으므로 둘 이상의 열에 대해 일부 작업을 수행해야 할 경우에도 유용합니다.
foo[foo[ ,c(1:N)], ]
또는 예상하시는 것처럼 특정 열이 있습니다.
foo[foo[ ,c(1,5,9)], ]
다른 옵션은 기능 필터를 사용하는 것일 수 있습니다.dplyr
. 다음은 재현 가능한 예입니다.
foo = data.frame(location = c("here", "there", "here", "there", "where"), x = 1:5, y = 6:10)
library(dplyr)
filter(foo, location == "there")
#> location x y
#> 1 there 2 7
#> 2 there 4 9
2022-09-11에 repex v2.0.2를 사용하여 생성됨
언급URL : https://stackoverflow.com/questions/3445590/subset-filter-rows-in-a-data-frame-based-on-a-condition-in-a-column
'programing' 카테고리의 다른 글
jQuery 유효성 확인 알림을 위해 트위터 부트스트랩 팝업을 사용하는 방법? (0) | 2023.10.15 |
---|---|
Apache POI를 사용하여 Excel Sheet 복사 (0) | 2023.10.15 |
ASP에 대한 IIS 사이트 이름을 가져옵니다.NET 웹사이트 (0) | 2023.10.15 |
플러그인 없이 각도 4의 페이지 앵커까지 스크롤을 부드럽게 하는 방법은 무엇입니까? (0) | 2023.10.15 |
CSS 파일 차단: MIME 유형 불일치(X-Content-Type-Options:nosniff) (0) | 2023.10.15 |