问题描述
我需要从长到宽重塑数据框。我想重塑几个变量,但也要保持数据框其余部分的格式。我有一个数据框,其中包含数年的种族、五分之一和收入。
df <- structure(list(year = c(2019,2019,2018,2018),race = c("Black Alone","Black Alone","Black Alone"),quintile = c("Lowest","Middle","Highest","Lowest","Highest"),income = c(8680,45356,177659,7657,42202,155520)),row.names = c(NA,-6L),class = c("tbl_df","tbl","data.frame"))
数据框 df
如下所示:
year race quintile income
2019 Black Alone Lowest 8680
2019 Black Alone Middle 45356
2019 Black Alone Highest 177659
2018 Black Alone Lowest 7657
2018 Black Alone Middle 42202
2018 Black Alone Highest 155520
我希望数据框看起来像:
year race Lowest_income Middle_income Highest_income
2019 Black Alone 8680 45356 177659
2018 Black Alone 7657 42202 155520
我不知道从哪里开始实现这一目标。任何帮助将不胜感激!
解决方法
我们可以使用
library(dplyr)
library(tidyr)
library(stringr)
df %>%
mutate(quintile = str_c(quintile,'_income')) %>%
pivot_wider(names_from = 'quintile',values_from = income)
-输出
# A tibble: 2 x 5
# year race Lowest_income Middle_income Highest_income
# <dbl> <chr> <dbl> <dbl> <dbl>
#1 2019 Black Alone 8680 45356 177659
#2 2018 Black Alone 7657 42202 155520