【问题标题】:Pad within grouped dates in R在 R 中的分组日期内填充
【发布时间】:2020-05-01 13:11:23
【问题描述】:
library(tidyverse)
library(lubridate)
library(padr)
df <- tibble(`Action Item ID` = c("ABC", "DEF", "GHI", "JKL", "MNO", "PQR"),
             `Date Created` = as.Date(c("2019-01-01", "2019-01-01", 
                                        "2019-06-01", "2019-06-01",
                                        "2019-08-01", "2019-08-01")),
             `Date Closed` = as.Date(c("2019-01-15", "2019-05-31", 
                                        "2019-06-15", "2019-07-05",
                                        "2019-08-15", NA)),
             `Current Status` = c(rep("Closed", 5), "Open")) %>% 
  pivot_longer(-c(`Action Item ID`, `Current Status`), 
               names_to = "Type",
               values_to = "Date")
#> # A tibble: 12 x 4
#>    `Action Item ID` `Current Status` Type         Date      
#>    <chr>            <chr>            <chr>        <date>    
#>  1 ABC              Closed           Date Created 2019-01-01
#>  2 ABC              Closed           Date Closed  2019-01-15
#>  3 DEF              Closed           Date Created 2019-01-01
#>  4 DEF              Closed           Date Closed  2019-05-31
#>  5 GHI              Closed           Date Created 2019-06-01
#>  6 GHI              Closed           Date Closed  2019-06-15
#>  7 JKL              Closed           Date Created 2019-06-01
#>  8 JKL              Closed           Date Closed  2019-07-05
#>  9 MNO              Closed           Date Created 2019-08-01
#> 10 MNO              Closed           Date Closed  2019-08-15
#> 11 PQR              Open             Date Created 2019-08-01
#> 12 PQR              Open             Date Closed  NA        

上面有我的数据框,我正在尝试使用 padr R 包填充每个组中的日期。

df %>% group_by(`Action Item ID`) %>% pad()
#> Error: Not all grouping variables are column names of x.

这个错误对我来说没有多大意义。我正在寻找如下所示的输出:

#> # A tibble: ? x 4
#>  `Action Item ID` `Current Status` Type         Date      
#>  <chr>            <chr>            <chr>        <date>    
#>  ABC              Closed           Date Created 2019-01-01
#>  ABC              NA               NA           2019-01-02
#>  ABC              NA               NA           2019-01-03
#>  ...              ...              ...          ...
#>  ABC              Closed           Date Closed  2019-01-15
#>  DEF              Closed           Date Created 2019-01-01
#>  DEF              NA               NA           2019-01-02
#>  ...              ...              ...          ...
#>  DEF              NA               NA           2019-05-30
#>  DEF              Closed           Date Closed  2019-05-31
#>  GHI              Closed           Date Created 2019-06-01
#>  ...              ...              ...          ...

有人知道出了什么问题吗?

【问题讨论】:

  • 我不熟悉padr,但如果您将列名更改为语法上有效的列名,即“action_item_id”,那么它就可以工作。所以也许是引擎盖下的一个整洁问题? df %&gt;% janitor::clean_names() %&gt;% group_by(action_item_id) %&gt;% pad() 有关于 NA 的警告,但没有错误
  • @camille 这解开了谜团。很好的侦探工作。
  • 您发布的错误消息提示我列名在某处丢失。包含错误消息如何使帮助更容易的完美示例!

标签: r date time-series lubridate padr


【解决方案1】:

根据?pad,有一个group参数

group - 指定分组变量的可选字符向量。填充将在不同的组内进行。当未指定时间间隔时,将确定在整个日期时间变量上应用 get_interval,忽略组(参见最后一个示例)。

所以,最好使用那个参数

library(dplyr)
library(padr)
df %>% 
   pad(group = "Action Item ID")
# A tibble: 233 x 4
#  `Action Item ID` `Current Status` Type         Date      
#   <chr>            <chr>            <chr>        <date>    
# 1 ABC              Closed           Date Created 2019-01-01
# 2 ABC              <NA>             <NA>         2019-01-02
# 3 ABC              <NA>             <NA>         2019-01-03
# 4 ABC              <NA>             <NA>         2019-01-04
# 5 ABC              <NA>             <NA>         2019-01-05
# 6 ABC              <NA>             <NA>         2019-01-06
# 7 ABC              <NA>             <NA>         2019-01-07
# 8 ABC              <NA>             <NA>         2019-01-08
# 9 ABC              <NA>             <NA>         2019-01-09
#10 ABC              <NA>             <NA>         2019-01-10
# … with 223 more rows

【讨论】:

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