#r
Вопрос:
У меня есть фрейм данных df
:
x1 x2 x3 x4 x5
1 2 3 4 5
...
...
и я должен сделать эту операцию:
pivot_data <- df %>%
pivot_longer(cols = c("x1", "x2", "x3", "x4", "x5"),
names_to = "var", values_to = "score")
но вместо cols = c("x1", "x2", "x3", "x4", "x5")
этого я хочу заменить его компактной функцией или чем-то еще, скажем, на случай, если у меня 1000 столбцов. Как это сделать?
Вот так?
cols = colnames(df)
Комментарии:
1. Напоминаем, что полезно заглядывать на
?pivot_longer
страницу справки, если у вас есть вопросы по этой функции. Есть примеры, в которых используетсяeverything()
справка для указания всех столбцов.
Ответ №1:
Чтобы включить все столбцы, используйте everything()
.
library(tidyr)
pivot_data <- df %>%
pivot_longer(cols = everything(), names_to = "var", values_to = "score")
Чтобы включить столбцы, начинающиеся с 'x'
use starts_with
.
pivot_data <- df %>%
pivot_longer(cols = starts_with('x'), names_to = "var", values_to = "score")
Чтобы включить столбцы, за которыми 'x'
следует число, используйте matches
—
pivot_data <- df %>%
pivot_longer(cols = matches('x\d '), names_to = "var", values_to = "score")
Ответ №2:
Мы можем просто использовать gather
library(tidyr)
pivot_data <- gather(df)