【问题标题】:pivot_longer with multiple date columns具有多个日期列的 pivot_longer
【发布时间】:2021-06-26 06:36:12
【问题描述】:

我有一个包含如下行的数据框:

dt <- data.frame(id = c(1,1), start = as.Date(c("2020-01-01", "2021-02-01")), end = as.Date(c("2020-12-31", "2022-01-31")), cancelled = as.Date(c("2021-01-10", NA)))

dt
## id      start        end  cancelled
##  1 2020-01-01 2020-12-31 2021-01-10
##  1 2021-02-01 2022-01-31       <NA>

我想通过pivot_longer来获得:

id   date        action
1    2020-01-01  start
1    2020-12-31  end
1    2021-01-10  cancelled
1    2021-02-01  start
1    2022-01-31  end

我认为这会起作用,但它会产生错误:

dt %>% 
pivot_wider(
  cols = !id, 
  names_to = "date", 
  values_to = "action")

Error: 2 components of `...` were not used.

We detected these problematic arguments:
* `names_to`
* `values_to`

Did you misspecify an argument?

【问题讨论】:

  • 使用参数cols 作为-id 而不是!id
  • 您使用的是pivot_wider 而不是pivot_longer。使用pivot_longer(dt, cols = !id, names_to = "date", values_to = "action", values_drop_na = TRUE)
  • @RonakShah DOH !!!谢谢!

标签: r dplyr tidyr


【解决方案1】:
dt %>% pivot_longer(-id) %>% filter(!is.na(value))

# A tibble: 5 x 3
     id name      value     
  <dbl> <chr>     <date>    
1     1 start     2020-01-01
2     1 end       2020-12-31
3     1 cancelled 2021-01-10
4     1 start     2021-02-01
5     1 end       2022-01-31

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-27
    • 2023-03-26
    • 2021-07-11
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多