Использование dplyr для сбора определенных фиктивных переменных - PullRequest
0 голосов
/ 26 октября 2018

Этот вопрос является расширением ( Использование dplyr для сбора фиктивных переменных ).

Вопрос: Как мне собрать только несколько столбцов вместо всего набора данных? Так что в этом примере я хочу собрать все столбцы, кроме «седана». Мой реальный набор данных содержит 250 столбцов, поэтому было бы здорово, если бы я мог включать / исключать столбцы по имени .

Набор данных

head(type)
x    convertible coupe hatchback sedan wagon
1           0     0         0     1     0
2           0     1         0     0     0
3           1     0         0     0     0
4           1     0         0     0     0
5           1     0         0     0     0
6           1     0         0     0     0

выход

TypeOfCar
1     x
2     coupe 
3     convertible
4     convertible
5     convertible
6     convertible

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Не уверен, что я вас понимаю, но вы можете делать то, что хотите:

df %>% select(-sedan) %>%  gather(Key, Value)

А если вам нужно много переменных, вы можете использовать:

select(-contains(""))
select(-start_wi(""))
select(-ends_with(""))

Надеюсь, это поможет.

0 голосов
/ 29 октября 2018

Исправлено с помощью комбинации @RLave и @Carlos Vecina

right_columns <- all_data %>% select(starts_with("hour"))

all_data$all_hour <-data.frame(new_column = names(right_columns )[as.matrix(right_columns )%*%seq_along(right_columns )],stringsAsFactors=FALSE)
0 голосов
/ 26 октября 2018

Вы можете использовать -sedan в gather:

dat %>% gather(TypeOfCar, Count, -sedan) %>% filter(Count >= 1) %>% select(TypeOfCar)
#      TypeOfCar
# 1 convertible
# 2 convertible
# 3 convertible
# 4 convertible
# 5       coupe

Данные:

tt <- "convertible coupe hatchback sedan wagon
1           0     0         0     1     0
2           0     1         0     0     0
3           1     0         0     0     0
4           1     0         0     0     0
5           1     0         0     0     0
6           1     0         0     0     0"

dat <- read.table(text = tt, header = T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...