【问题标题】:R: Adding days() interval to Datetime object in a tibbleR:将 days() 间隔添加到小标题中的 Datetime 对象
【发布时间】:2020-11-23 23:42:57
【问题描述】:

我有一个名为 Download_date 的日期时间对象。我想在 tibble 中为该对象添加 13 天的间隔,具体取决于下面所述的条件。

Clean_Data[Clean_Data$Origin == "Site A" & Clean_Data$Ship_Mode == "AIR" &  Clean_Data$PO_Download_Date > Clean_Data$Receipt_Date, "Receipt_Date"] <- 
  Clean_Data[Clean_Data$Origin == "Site A" & Clean_Data$Ship_Mode == "AIR" &  Clean_Data$PO_Download_Date > Clean_Data$Receipt_Date, "PO_Download_Date"] + days(13)

当我运行这段代码时,这是它给我的错误消息。

Error: Incompatible classes: <tbl_df> + <Period>

我该如何解决这个问题?我只用一个日期时间值做了同样的事情,并且工作正常。我猜这是因为我正在使用数据框。

【问题讨论】:

    标签: r dataframe datetime


    【解决方案1】:

    我们可以使用$[[ 进行子集化,以从tibble 中提取列

    i1 <- Clean_Data$Origin == "Site A" & Clean_Data$Ship_Mode == "AIR" & 
                 Clean_Data$PO_Download_Date > Clean_Data$Receipt_Date
    Clean_Data$Receipt_Date[i1] <- Clean_Data$PO_Download_Date[i1]
    

    【讨论】:

      【解决方案2】:

      您可以使用if_elsemutate 来更新Receipt_Date 列。

      library(dplyr)
      library(lubridate)
      
      Clean_Data <- Clean_Data %>%
        mutate(Receipt_Date = if_else(Origin == "Site A" &  
                                      Ship_Mode == "AIR" & 
                                      PO_Download_Date > Receipt_Date, 
                                      PO_Download_Date + days(13), Receipt_Date)) 
      Clean_Data
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-06
        • 1970-01-01
        • 2017-02-06
        • 1970-01-01
        • 1970-01-01
        • 2021-04-26
        • 2020-11-01
        • 1970-01-01
        相关资源
        最近更新 更多