Как преобразовать данные из длинного в широкоформатный формат, чтобы добиться такого вывода?
У меня проблемы с перестановкой следующего фрейма данных с tidyr
пакет:
data <- data.frame(
name = rep(c("John", "Mary", "Peter", "Sarah"), each=2),
firm = c("a", "b", "c", "d", "a", "b", "c", "d"),
rank = rep(1:2, 4),
value = rnorm(8)
)
Я хочу изменить его так, чтобы каждая уникальная переменная "name" представляла собой имя строки, с "значениями" в качестве наблюдений вдоль этой строки и "rank" в качестве имен столбцов, за которыми следовало бы "фирменное" имя. Вроде как это:
name 1 firm_1 2 firm_2
John 0.3407997 a -0.3795377 b
Mary -0.8981073 c -0.5013782 d
Peter 0.3407997 a -0.3795377 b
Sarah -0.8981073 c -0.5013782 d
0 ответов
Мы можем использовать комбинацию dplyr
а также tidyr
, как и в комментариях @aosmith.
library(dplyr) # [1] ‘1.0.0’
library(tidyr) # [1] ‘1.1.0’
data %>% pivot_wider(names_from = rank, values_from = c(firm, value)) %>%
select(name, `1` = value_1, firm_1, `2` = value_2, firm_2)
Чтобы полностью перейти от длинного к широкому формату, мы должны взять values_from
не 1, а 2 столбца, как оригинал data
имеет 4, а не 3 столбца.