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