이 데이터 세트가 있다고 가정합니다.
df <- data.frame(a = rep(1:2, 5),
b = c("value", "character", "string", "anotherstring", "character", NA, "code", "variable", NA, "cell"),
c = c(1, 2, 5, 4, 5, 7, 8, 9, 6, 10),
d = rep(2:1, 5),
e = rep(1, 10))
df
a b c d e
1 1 value 1 2 1
2 2 character 2 1 1
3 1 string 5 2 1
4 2 anotherstring 4 1 1
5 1 character 5 2 1
6 2 <NA> 7 1 1
7 1 code 8 2 1
8 2 variable 9 1 1
9 1 <NA> 6 2 1
10 2 cell 10 1 1
값이 1과 2 인 df 에서 열을 선택하고 싶습니다 (따라서 열 a 와 d 만 해당). 열 이름을 모른다고 가정하면 dplyr의 열 값 범위를 기반으로 데이터를 하위 집합으로 만드는 효율적인 방법이 있습니까? select_if
및 select_at
을 (를) 사용한 초기 시도 는 실패했습니다. 미리 감사드립니다!
당신이 사용할 수있는 :
library(dplyr)
df %>% select_if(~any(. == 1) & any(. == 2) & all(. %in% 1:2))
# a d
#1 1 2
#2 2 1
#3 1 2
#4 2 1
#5 1 2
#6 2 1
#7 1 2
#8 2 1
#9 1 2
#10 2 1
최신 버전에서는 dplyr
다음과 같이 작성할 수 있습니다.
df %>% select(where(~any(. == 1) & any(. == 2) & all(. %in% 1:2)))
기본 R에서 동일 Filter
:
Filter(function(x) any(x == 1) & any(x == 2) & all(x %in% 1:2) , df)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다