Pivot_wider 使用多个变量发布表

时间:2021-06-11 17:28:01

标签: r tidyr

我正在创建一个用于发布的表,但在创建我需要的结构时遇到了问题。

“数据”:

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

我知道他应该可以使用枢轴函数,但我不确定在我变宽之前我是否需要旋转更长的时间,而且我所做的所有实验都无法获得正确的名称或数据顺序.我非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

我们也可以使用以下解决方案:

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   

答案 1 :(得分:1)

您可以使用 reshape2 包中的 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/navigation_stage_zero" android:icon="@mipmap/zero" android:title="Stage 0" /> <item android:id="@+id/navigation_stage_one" android:icon="@mipmap/zero" android:title="Stage 1" /> <item android:id="@+id/navigation_stage_two" android:icon="@drawable/two" android:title="Stage 2" /> <item android:id="@+id/navigation_stage_three" android:icon="@drawable/three" android:title="Stage 3" /> </menu>

recast