【问题标题】:Why am I getting an error when calling the `separate` function with a column?为什么在使用列调用 `separate` 函数时出现错误?
【发布时间】:2021-08-19 06:59:31
【问题描述】:

这是我的数据框中的数据格式

我希望我的数据框看起来像这样

这就是我想做的事情

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

separate(data1, col = data1$Description, into = c("Location","ID","Date"),sep = ':')

这是我得到的错误 错误:必须提取具有单个有效下标的列。 x 下标var 的大小为 10,但大小必须为 1。运行 rlang::last_error() 以查看发生错误的位置。

【问题讨论】:

  • 没有您的数据很难测试,但我怀疑您不需要 data1$ 在您的 col 参数中。它仅适用于col = Description(或col = 'Description')吗?

标签: r tidyr


【解决方案1】:

正如评论中提到的,问题与您引用 Description 列的方式有关。

见:

df <- data.frame(
  Description = c("location1:52:2018-10-20", "location2:59:2018-14-24")
)
# working
tidyr::separate(df, col = Description, into = c("Location", "ID", "Date"), sep = ":")
#>    Location ID       Date
#> 1 location1 52 2018-10-20
#> 2 location2 59 2018-14-24
tidyr::separate(df, col = "Description", into = c("Location", "ID", "Date"), sep = ":")
#>    Location ID       Date
#> 1 location1 52 2018-10-20
#> 2 location2 59 2018-14-24
tidyr::separate(df, col = 1, into = c("Location", "ID", "Date"), sep = ":")
#>    Location ID       Date
#> 1 location1 52 2018-10-20
#> 2 location2 59 2018-14-24

# not working
tidyr::separate(df, col = df$Description, into = c("Location", "ID", "Date"), sep = ":")
#> Error: Must extract column with a single valid subscript.
#> x Subscript `var` has size 2 but must be size 1.

reprex package (v2.0.0) 于 2021-08-19 创建

【讨论】:

    【解决方案2】:

    如果您也对 base R 解决方案感兴趣,可以试试这个 :

    data1 <- data.frame(Description = c("location1:48:2018-10-23", "location2:83:2018-01-05"), Temp = c(-0.9381736, 1.1714643))
    data1
    #              Description   Temp
    # 1 location1:48:2018-10-23 -0.9381736
    # 2 location2:83:2018-01-05  1.1714643
    
    data2 <- data1$Description|> strsplit(":") |> sapply(c) |> t() |> as.data.frame() |> cbind(data1$Temp)
    colnames(data2) <- c('Location', 'ID', 'Date', 'Temp')
    
    data2
    #    Location ID       Date       Temp
    # 1 location1 48 2018-10-23 -0.9381736
    # 2 location2 83 2018-01-05  1.1714643
    

    请注意,原生管道 |&gt; 仅在 R 4.1.0 或更高版本中可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-21
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      相关资源
      最近更新 更多