R: добавление интервала days () к объекту Datetime в tibble

#r #dataframe #datetime

#r #dataframe #datetime

Вопрос:

У меня есть объект datetime с именем Download_date. Я хочу добавить интервал в 13 дней к этому объекту в tibble, в зависимости от условия, указанного ниже.

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

Когда я запускал этот код, это сообщение об ошибке, которое он мне выдал.

 Error: Incompatible classes: <tbl_df>   <Period>
 

Как я могу решить эту проблему? Я сделал то же самое только с одним значением datetime и работал нормально. Я предполагаю, что это происходит потому, что я работаю с фреймом данных.

Ответ №1:

Мы могли бы использовать подмножество $ или [[ для извлечения столбца из tibble

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

Ответ №2:

Вы можете использовать if_else with mutate для обновления Receipt_Date столбца.

 library(dplyr)
library(lubridate)

Clean_Data <- Clean_Data %>%
  mutate(Receipt_Date = if_else(Origin == "Site A" amp;  
                                Ship_Mode == "AIR" amp; 
                                PO_Download_Date > Receipt_Date, 
                                PO_Download_Date   days(13), Receipt_Date)) 
Clean_Data