I am running into issues with subsetting after subtracting dates using lubridate. I have a dataframe:
customerid <- c("A1", "A1", "A2", "A2", "A3", "A3", "A3", "A4")
orderdate <- c("2018-09-14", "2018-09-14", "2018-09-15", "2018-09-15", "2020-08-21", "2020-08-21","2020-08-21", "2018-08-10")
returndate <- c("2018-09-15", "2018-09-18", "2018-09-20", "2019-09-15", "2021-08-20", "2020-07-21","2020-09-21", "2018-08-15")
orderid <- c("1", "2", "3", "4", "5", "6", "7", "8")
df <- data.frame(customerid, orderdate, returndate, orderid)
I then want to subset difference = 1 day. Here is my code:
df$orderdate <- as.Date(df$orderdate, format="%m/%d/%Y")
df$resultdate <- as.Date(df$resultdate, format="%m/%d/%Y")
df$order_result_datediff <- difftime(df$orderdate, df$resultdate, units = "days" )
df$nextday <- subset(df, df$order_result_datediff == '1 day')
The subsetting does not work, and I just get all the results in the column. Thank you!
Would this work?
library(lubridate)
library(dplyr)
customerid <- c("A1", "A1", "A2", "A2", "A3", "A3", "A3", "A4")
orderdate <- c("2018-09-14", "2018-09-14", "2018-09-15", "2018-09-15", "2020-08-21", "2020-08-21","2020-08-21", "2018-08-10")
returndate <- c("2018-09-15", "2018-09-18", "2018-09-20", "2019-09-15", "2021-08-20", "2020-07-21","2020-09-21", "2018-08-15")
orderid <- c("1", "2", "3", "4", "5", "6", "7", "8")
df <- data.frame(customerid, orderdate, returndate, orderid)
df$orderdate <- ymd(df$orderdate)
df$resultdate <- ymd(df$returndate)
df$order_result_datediff <- interval(df$orderdate, df$resultdate) / days(1)
df2 <- df %>%
filter(order_result_datediff == 1)
df2
#> customerid orderdate returndate orderid resultdate order_result_datediff
#> 1 A1 2018-09-14 2018-09-15 1 2018-09-15 1
Created on 2023-03-29 with reprex v2.0.2