Как исключить несколько столбцов в функции сбора - PullRequest
0 голосов
/ 02 января 2019

У меня есть данные, состоящие из столбцов со следующими именами: ID,A,B,C,A_5,B_5,C_5

Я хочу использовать функцию gather(), чтобы исключить ID,A_5,B_5 и C_5.Я знаю, что если бы я хотел исключить только ID, я мог бы написать:

df %>% gather(key = categories ,value = value, -ID)

Но я не мог найти способ исключить несколько столбцов одновременно.Я был бы очень признателен, если бы кто-нибудь сказал мне правильный синтаксис.До сих пор я пробовал и потерпел неудачу с:

df %>% gather(key = categories ,value = value, -vars(ID,A_5,B_5,C_5)
df %>% gather(key = categories ,value = value, -c(ID,A_5,B_5,C_5)
df %>% gather(key = categories ,value = value, -list(ID,A_5,B_5,C_5)
df %>% gather(key = categories ,value = value, -list(ID,A_5,B_5,C_5)

Также у меня есть несколько других фреймов данных, над которыми я хотел бы выполнить ту же операцию.Все они имеют разную длину столбцов, а для некоторых мне нужно исключить более 10 столбцов.Таким образом, ссылаться на эти столбцы по их индексу было бы гораздо удобнее.Это возможно?Если да, то как это может быть достигнуто?

Я не привел воспроизводимый пример, поскольку это всего лишь вопрос синтаксиса.Я надеюсь, что это нормально.

Заранее спасибо.

1 Ответ

0 голосов
/ 02 января 2019

Ваша вторая попытка работает для меня:

df <- data.frame(Col1 = c(1, 2, 2, 3), Col2 = c(7, 9, 8, 1), ID = "ID", A_5 = "Test1", B_5 = "Test2", C_5 = "Test3")
df %>% gather(key = categories, value = value, -c(ID, A_5, B_5, C_5))

Вывод:

  ID   A_5   B_5   C_5 categories value
1 ID Test1 Test2 Test3       Col1     1
2 ID Test1 Test2 Test3       Col1     2
3 ID Test1 Test2 Test3       Col1     2
4 ID Test1 Test2 Test3       Col1     3
5 ID Test1 Test2 Test3       Col2     7
6 ID Test1 Test2 Test3       Col2     9
7 ID Test1 Test2 Test3       Col2     8
8 ID Test1 Test2 Test3       Col2     1

Если по какой-то причине это не сработает, попробуйте обновить пакеты или процитироватьимена столбцов: -c ("ID", "A_5", "B_5", "C_5")

Или, чтобы исключить использование индекса столбцов (тот же вывод):

toExclude <- names(df)[3:6]
df %>% gather(key = categories, value = value, -toExclude)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...