#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