【问题标题】:how to use pivot_longer to save to multiple columns?如何使用 pivot_longer 保存到多个列?
【发布时间】:2021-12-29 20:52:56
【问题描述】:

假设我有一个与此类似的 df:

# A tibble: 5 x 6
     x1    x2    x3    y1    y2    y3
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1     4     3     2     4     3     2
2     4     3     2     4     3     2
3     4     3     2     4     3     2
4     4     3     2     4     3     2
5     4     3     2     4     3     2

有没有一种方法可以在单个 pivot_longer 命令中创建一个包含 x、y、z 列的小标题?现在我正在为每组列使用一个 pivot_longer 行,但我确信有更简单的方法得到它。

      x     y     z
   <dbl> <dbl> <dbl>
 1     4     4     1
 2     4     4     1
 3     4     4     1
 4     4     4     1
 5     4     4     1
 6     3     3     2
 7     3     3     2
 8     3     3     2
 9     3     3     2
10     3     3     2
11     2     2     3
12     2     2     3
13     2     2     3
14     2     2     3
15     2     2     3

【问题讨论】:

    标签: r pivot tidyr


    【解决方案1】:

    如果您使用的是pivot_longer

    df %>% pivot_longer(everything(), names_to = c(".value", "z"), names_pattern = "(.)(.)")
    

    【讨论】:

      【解决方案2】:

      您可以使用基础 R 的 reshape:

      reshape(inp, direction="long", varying=list(1:3, 4:6), sep="")
          time x1 y1 id
      1.1    1  4  4  1
      2.1    1  4  4  2
      3.1    1  4  4  3
      4.1    1  4  4  4
      5.1    1  4  4  5
      1.2    2  3  3  1
      2.2    2  3  3  2
      3.2    2  3  3  3
      4.2    2  3  3  4
      5.2    2  3  3  5
      1.3    3  2  2  1
      2.3    3  2  2  2
      3.3    3  2  2  3
      4.3    3  2  2  4
      5.3    3  2  2  5
      

      两个“技巧”。一种是使用 sep="" 将这些列名拆分为字母和数字。其次是使用列表参数来改变。如果您想删除标识原始行的第一列,请使用[-1]。您还可以使用v.names 向量来命名列,即:

         reshape(inp, direction="long", varying=list(1:3, 4:6), sep="", v.names=c("X","Y"))[-1]
          X Y id
      1.1 4 4  1
      2.1 4 4  2
      3.1 4 4  3
      4.1 4 4  4
      5.1 4 4  5
      1.2 3 3  1
      2.2 3 3  2
      3.2 3 3  3
      4.2 3 3  4
      5.2 3 3  5
      1.3 2 2  1
      2.3 2 2  2
      3.3 2 2  3
      4.3 2 2  4
      5.3 2 2  5
      

      【讨论】:

        猜你喜欢
        • 2021-09-07
        • 1970-01-01
        • 2021-06-04
        • 2021-09-20
        • 1970-01-01
        • 2022-11-10
        • 2022-12-06
        • 2020-02-01
        • 2022-09-27
        相关资源
        最近更新 更多