Rdplyr: 여러 열 삭제
데이터 프레임과 해당 데이터 프레임에 삭제할 열 목록이 있습니다.다음을 사용합니다.iris
데이터 집합을 예로 들 수 있습니다.그만 두고 싶어요Sepal.Length
그리고.Sepal.Width
나머지 열만 사용합니다.사용하여 이 작업합니까?select
또는select_
에서dplyr
패키지?
제가 지금까지 시도한 것은 다음과 같습니다.
drop.cols <- c('Sepal.Length', 'Sepal.Width')
iris %>% select(-drop.cols)
오류 in -drop.cols: 단항 연산자에 대한 인수가 잘못되었습니다.
iris %>% select_(.dots = -drop.cols)
오류 in -drop.cols: 단항 연산자에 대한 인수가 잘못되었습니다.
iris %>% select(!drop.cols)
!drop.cols 오류: 잘못된 인수 유형
iris %>% select_(.dots = !drop.cols)
!drop.cols 오류: 잘못된 인수 유형
이미 존재해야 할 꽤 유용한 작업처럼 보이기 때문에 명백한 무언가를 놓치고 있는 것 같습니다.Github에 어떤 사람이 비슷한 문제를 게시했고, Hadley는 '부정적 색인'을 사용하라고 말했습니다.그것이 제가 노력한 것입니다만, 소용이 없었습니다.좋은 의견이라도 있나?
select_vars의 도움말을 확인합니다.이를 통해 작업 방법에 대한 추가적인 아이디어를 얻을 수 있습니다.
당신의 경우:
iris %>% select(-one_of(drop.cols))
또한 시도합니다.
## Notice the lack of quotes
iris %>% select (-c(Sepal.Length, Sepal.Width))
너머에select(-one_of(drop.cols))
다음을 사용하여 열을 삭제할 수 있는 몇 가지 다른 옵션이 있습니다.select()
모든 특정 열 이름을 정의하지 않습니다(열 이름의 다양성을 위해 dplyr starwars 샘플 데이터 사용).
starwars %>%
select(-(name:mass)) %>% # the range of columns from 'name' to 'mass'
select(-contains('color')) %>% # any column name that contains 'color'
select(-starts_with('bi')) %>% # any column name that starts with 'bi'
select(-ends_with('er')) %>% # any column name that ends with 'er'
select(-matches('^f.+s$')) %>% # any column name matching the regex pattern
select_if(~!is.list(.)) %>% # not by column name but by data type
head(2)
# A tibble: 2 x 2
homeworld species
<chr> <chr>
1 Tatooine Human
2 Tatooine Droid
조심해서 사용하세요.select()
dplyr 패키지와 MASS 패키지 모두에서 사용되므로 MASS가 로드되면 select()가 제대로 작동하지 않을 수 있습니다.로드된 패키지를 확인하려면 다음을 입력합니다.sessionInfo()
"기타 첨부 패키지:" 섹션에서 검색합니다.로드된 경우 다음과 같이 입력합니다.detach( "package:MASS", unload = TRUE )
그리고 당신의select()
기능이 다시 작동해야 합니다.
시도할 수 있습니다.
iris %>%
select_(.dots= setdiff(names(.),drop.cols))
여기에 도착하는 모든 사람들은 다양한 열을 떨어뜨리기를 원합니다.
최소 재현 가능한 예제
다음과 같은 열 범위를 삭제합니다.
iris %>%
select(-(Sepal.Width:Petal.Width)) %>%
head
# Sepal.Length Species
# 1 5.1 setosa
# 2 4.9 setosa
# 3 4.7 setosa
# 4 4.6 setosa
# 5 5.0 setosa
# 6 5.4 setosa
참고:
- 그
(
,)
열 이름 주위는 중요하며 반드시 사용되어야 합니다.
다른 방법은 원하지 않는 열을 다음으로 변환하는 것입니다.NULL
이렇게 하면 포함된 괄호를 피할 수 있습니다.
head(iris,2) %>% mutate_at(drop.cols, ~NULL)
# Petal.Length Petal.Width Species
# 1 1.4 0.2 setosa
# 2 1.4 0.2 setosa
열 이름에 특수 문자가 있는 경우 다음 중 하나를 선택합니다.select
또는select_
예상대로 작동하지 않을 수 있습니다.의 이 속성dplyr
을 사용하는."."
문제의 데이터 집합을 참조하기 위해 다음 행을 사용하여 이 문제를 해결할 수 있습니다.
drop.cols <- c('Sepal.Length', 'Sepal.Width')
iris %>% .[,setdiff(names(.),drop.cols)]
시도해 보세요
iris %>% select(-!!drop.cols)
저도 같은 문제에 직면했지만, 주요 오류는 "select()"와 같은 이름의 다른 함수 정의를 가진 라이브러리를 포함하는 것이었습니다.저는 MASS 패키지 선택 기능과 충돌했습니다.
MASS 라이브러리를 분리한 후 오류가 중지되었습니다.
언급URL : https://stackoverflow.com/questions/35839408/r-dplyr-drop-multiple-columns
'programing' 카테고리의 다른 글
Python에서 새 줄 구분 기호를 사용하여 문자열 분할 (0) | 2023.07.04 |
---|---|
install_referrer 의도 사용 중지 (0) | 2023.07.04 |
다대일 관계로 테이블을 만들면 Spring Boot에서 오류가 발생함 (0) | 2023.06.29 |
Visual Studio에서 "오류 목록"을 완전히 제거합니다. (0) | 2023.06.29 |
봄에 '거부된 콩 이름 - URL 경로가 식별되지 않음'을 처리하는 방법은? (0) | 2023.06.29 |