ProgramingTip

일치를 기반으로 열 선택 -dplyr :: select

bestdevel 2020. 11. 3. 08:23
반응형

일치를 기반으로 열 선택 -dplyr :: select


많은 열이있는 데이터 프레임 ( "데이터")이 있습니다. 일부 열에는 많은 경우 ( "search_string")이 포함되어 있습니다.

dplyr::select()패키지가 포함 된 열만 포함하는 하위 집합을 제공 하고 어떻게 해야합니까?

나는 시도했다 :

# columns as boolean vector
select(data, grepl("search_string",colnames(data)))

# columns as vector of column names names 
select(data, colnames(data)[grepl("search_string",colnames(data))]) 

둘 다 작동하지 않습니다.

select()를 들어 열 예 대신 숫자 벡터 허용 한다는 것을 알고 있습니다.

select(data,5,7,9:20)

하지만 IDgrepl()표현식 에서 열의 숫자 벡터를 얻는 방법을 모르겠습니다 .


dplyr의 세계, 시도 :

select(iris,contains("Sepal"))

의 선택 섹션을 참조하십시오 ?select수많은 도우미가 좋아 위해 starts_with, ends_with


당신은 시도 할 수 있습니다 :

select(data, matches("search_string"))

그것은보다 더 일반적이다 contains-당신은 (예를 정규식 사용할 수 있습니다 "one_string|or_the_other").

더 많은 예는 http://rpackages.ianhowson.com/cran/dplyr/man/select.html을 참조하십시오 .


사용할 필요는 select단지 사용하지 않는 [대신

data[,grepl("search_string", colnames(data))]

iris데이터 세트를 보겠습니다.

>iris[,grepl("Sepal", colnames(iris))]
  Sepal.Length Sepal.Width
1          5.1         3.5
2          4.9         3.0
3          4.7         3.2
4          4.6         3.1
5          5.0         3.6
6          5.4         3.9

Piotr Migdals 응답을 기반으로하는 벡터에 대한 가능성을 가능하게하는 대체 솔루션을 제공하고 싶습니다.

myVectorOfStrings <- c("foo", "bar")
matchExpression <- paste(myVectorOfStrings, collapse = "|")
# [1] "foo|bar"
df %>% select(matches(matchExpression))

정규식 OR연산자 ( |) 사용

참고 URL : https://stackoverflow.com/questions/25923392/select-columns-based-on-string-match-dplyrselect

반응형