【问题标题】:tidyr "pivot_longer": repeat column gives object not found errortidyr“pivot_longer”:重复列给出对象未找到错误
【发布时间】:2020-10-06 03:00:20
【问题描述】:

我从一个包含 5 列的数据框开始:一个处理列 T_type 和四个结果变量列 A、B、C 和 D。我正在尝试堆叠结果变量,所以我最终一列是值,另一列是四个结果变量的名称,然后是一列,其中治疗名称沿着堆叠的列向下重复。这是 relig_income 示例中 pivot_longer 的 R 帮助页面中显示的内容,并且几乎是 Jason 在这里尝试做的:dplyr `pivot_longer()` object not found but it's right there?

Jason 在使用 pivot_longer 时遇到了同样的错误,但不知道为什么。这就是正在发生的事情。

dd <- as.data.frame(matrix(rpois(32, 4), nrow = 8))
names(dd) <- LETTERS[1:4]
dd <- data.frame(dd, T_type = rep(c("M", "P"), each = 4))
dd
  A B C  D T_type
1 3 5 5  4      M
2 7 5 2  2      M
3 2 3 3 10      M
4 3 3 2  3      M
5 8 3 4  3      P
6 4 4 5  1      P
7 6 4 2  6      P
8 9 4 3  6      P

所以现在我试试pivot_longer

dd %>% pivot_longer(-T_type, cols = A:D, names_to = "response", values_to = "y_obs")
Error in build_longer_spec(data, !!cols, names_to = names_to, values_to = values_to,  : 
  object 'T_type' not found

重新排列 dd 中的列,以便 T_type 在 A 到 D 列之前没有帮助。

如果有人能告诉我这里发生了什么以及如何让 pivot_longer 完成这项工作,我将不胜感激。

【问题讨论】:

    标签: r dplyr tidyr


    【解决方案1】:

    您需要从pivot_longer 中删除T_type,因为此函数的第一个参数是数据集(在%&gt;% 管道中可以省略)

    dd %>% pivot_longer(cols = A:D, names_to = "response", values_to = "y_obs")
    

    输出

    # A tibble: 32 x 3
    #    T_type response y_obs
    #    <chr>  <chr>    <int>
    #  1 M      A            7
    #  2 M      B            4
    #  3 M      C            4
    #  4 M      D            3
    #  5 M      A            8
    #  6 M      B            3
    #  7 M      C            5
    #  8 M      D            3
    #  9 M      A            4
    # 10 M      B            6
    # ... with 22 more rows
    

    【讨论】:

      【解决方案2】:

      试试这个:

      dd %>% 
        gather("response", "y_obs", -T_type)
      

      或者:

      dd %>% pivot_longer(names_to = "response", values_to = "y_obs", -T_type)
      

      或者:

      dd %>% pivot_longer(names_to = "response", values_to = "y_obs", A:D)
      

      你指定 cols 的范围:A 到 D,所以你不会找到 T_type

      【讨论】:

        猜你喜欢
        • 2021-09-07
        • 2022-01-08
        • 1970-01-01
        • 2014-08-21
        • 2016-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-16
        相关资源
        最近更新 更多