Pivot_wider 使用多个变量进行发布 table
Pivot_wider using multiple variables for publication table
我正在努力创建一个 table 用于发布,但在创建我需要的结构时遇到了问题。
“数据”:
a <- data.frame(Year = c(2018, 2019, 2020), a = 1:3,
b = c("a", "b", "c"),
c = c("d", "e", "f"),
fac = rep("this", 3))
理想的产品应该是这样的。
fac 2018_a 2018_b 2018_c 2019_a 2019_b 2019_c 2020_a 2020_b 2020_c
this 1 a d 2 b e 3 c f
我知道他的枢轴函数应该是可行的,但我不确定在我变宽之前是否需要更长时间的枢轴,而且我所做的所有实验都无法获得名称或数据订单正确。如果有任何帮助,我将不胜感激!
您可以使用 reshape2 包中的 recast
:
reshape2::recast(a, fac~Year+variable, id.var = c('Year', 'fac'))
fac 2018_a 2018_b 2018_c 2019_a 2019_b 2019_c 2020_a 2020_b 2020_c
1 this 1 a d 2 b e 3 c f
我们也可以采用以下解决方案:
library(tidyr)
a %>%
pivot_wider(names_from = Year, values_from = c(a, b, c),
names_glue = "{Year}_{.value}") %>%
select(fac, sort(names(.)[-1]))
# A tibble: 1 x 10
fac `2018_a` `2018_b` `2018_c` `2019_a` `2019_b` `2019_c` `2020_a` `2020_b` `2020_c`
<chr> <int> <chr> <chr> <int> <chr> <chr> <int> <chr> <chr>
1 this 1 a d 2 b e 3 c f
我正在努力创建一个 table 用于发布,但在创建我需要的结构时遇到了问题。
“数据”:
a <- data.frame(Year = c(2018, 2019, 2020), a = 1:3,
b = c("a", "b", "c"),
c = c("d", "e", "f"),
fac = rep("this", 3))
理想的产品应该是这样的。
fac 2018_a 2018_b 2018_c 2019_a 2019_b 2019_c 2020_a 2020_b 2020_c
this 1 a d 2 b e 3 c f
我知道他的枢轴函数应该是可行的,但我不确定在我变宽之前是否需要更长时间的枢轴,而且我所做的所有实验都无法获得名称或数据订单正确。如果有任何帮助,我将不胜感激!
您可以使用 reshape2 包中的 recast
:
reshape2::recast(a, fac~Year+variable, id.var = c('Year', 'fac'))
fac 2018_a 2018_b 2018_c 2019_a 2019_b 2019_c 2020_a 2020_b 2020_c
1 this 1 a d 2 b e 3 c f
我们也可以采用以下解决方案:
library(tidyr)
a %>%
pivot_wider(names_from = Year, values_from = c(a, b, c),
names_glue = "{Year}_{.value}") %>%
select(fac, sort(names(.)[-1]))
# A tibble: 1 x 10
fac `2018_a` `2018_b` `2018_c` `2019_a` `2019_b` `2019_c` `2020_a` `2020_b` `2020_c`
<chr> <int> <chr> <chr> <int> <chr> <chr> <int> <chr> <chr>
1 this 1 a d 2 b e 3 c f