【问题标题】:tidyr::pivot_wider() error ! Can't subset columns that don't existtidyr::pivot_wider() 错误!不能对不存在的列进行子集化
【发布时间】:2023-02-03 02:18:50
【问题描述】:

我不确定为什么我一直收到此错误,但如果您有任何见解,将不胜感激。该错误在tidyr::pivot_wider 部分不断发生。 以下是完整代码:

library(tidyr)
library(dplyr)
library(stringr)

impacts = impact %>%
    tidyr::pivot_longer(PI_Direct_Impact:E_Total,
                        names_to = "names",
                        values_to = "values") %>%
    dplyr::mutate(
      Impact_Type = dplyr::case_when(
        stringr::str_detect(names, "PI_") ~ "Income Impacts",
        stringr::str_detect(names, "TV_") ~ "Total Value Added",
        stringr::str_detect(names, "O_") ~ "Output Impacts",
        stringr::str_detect(names, "E_") ~ "Employment Impacts"
      )
    ) %>%
    dplyr::mutate(
      Group = dplyr::case_when(
        stringr::str_detect(names, "Direct_Impact") ~ "Direct",
        stringr::str_detect(names, "Indirect_Impact") ~ "Indirect",
        stringr::str_detect(names, "Induced_Impact") ~ "Induced",
        stringr::str_detect(names, "Total") ~ "Total"
      )
    ) %>%
    dplyr::select(-names) %>%
    tidyr::pivot_wider(
      id_cols = c(
        fips,
        `Economic Category`,
        `Species Category`,
        spec_no,
        Impact_Type,
        Group,
        Imports
      ),
      names_from = Group,
      values_from = values
    )

我无法共享数据,但这里是 pivot_wider 函数之前的列标题:

# A tibble: 6 x 8
   fips `Economic Category` Species~1 spec_no Imports values Impac~2 Group
  <dbl> <chr>               <chr>       <dbl> <chr>    <dbl> <chr>   <chr>

这是我不断收到的完整错误:

Error in `select_wider_id_cols()`:
! Can't subset columns that don't exist.
x Column `Group` doesn't exist. 

先感谢您!

【问题讨论】:

    标签: r tidyr


    【解决方案1】:

    我们不需要 id_cols 中的 Group

    %>%
    tidyr::pivot_wider(
          id_cols = c(
            fips,
            `Economic Category`,
            `Species Category`,
            spec_no,
            Impact_Type,
            
            Imports
          ),
          names_from = Group,
          values_from = values
        )
    

    根据?pivot_wider

    id_cols - 一组唯一标识每个观察值的列。默认为数据中的所有列除了对于中指定的列names_from 和 values_from.通常在您有冗余变量时使用,即其值与现有变量完全相关的变量。

    【讨论】:

      猜你喜欢
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2019-12-31
      相关资源
      最近更新 更多