У меня есть объединенный фрейм данных, который выглядит следующим образом:
DF <- structure(list(OpenUser = c(11111, 11111, 11111, 11111, 11111,
11111), OpenFirstName = c("Sigal", "Sigal", "Sigal", "Sigal",
"Sigal", "Sigal"), OpenLastName = c("segal", "segal", "segal",
"segal", "segal", "segal"), CRMEventStartDate = structure(c(1430524800,
1430524800, 1435881600, 1435881600, 1425168000, 1425168000), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), CustomerID = c(7033, 7033, 7033, 7033,
9040, 9040), Application = c("Incoming Call", "Incoming Call",
"Incoming Call", "Incoming Call", "Incoming Call", "Incoming Call"
), CustomerType = c("Private", "Private", "Private", "Private",
"Private", "Private"), CampaignStrategyID = c(121212, 512345,
121212, 512345, 512345, 516345), ResponseDate = structure(c(1435881600,
1430524800, 1435881600, 1430524800, 1425168000, 1430870400), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), ResponseCode = c(3, 1, 3, 1, 3, 1),
days = c(62, 0, 0, -62, 0, 66)), class = c("tbl_df", "tbl",
"data.frame"), row.names = c(NA, -6L))
У меня есть две проблемы с этим фреймом данных:
1) время разницы между двумя одинаковыми датами возвращает 0, мне нужно, чтобы вернуть 1.
2) это объединенный фрейм данных.каким-то образом мое объединение вернуло нежелательные строки, где вы можете видеть, что "CRMEventstartdate"
идет после "ResponseDate"
, что невозможно.Дата ответа всегда должна быть в тот же день или позже, НЕ до.почему это происходит и как я могу предотвратить это?
два объединенных кадра данных:
Calls <- structure(list(OpenUser = c(11111, 11111, 11111, 11111, 11111,
11111), OpenFirstName = c("Sigal", "Sigal", "Sigal", "Sigal",
"Sigal", "Sigal"), OpenLastName = c("segal", "segal", "segal",
"segal", "segal", "segal"), CRMEventStartDate = structure(c(1430524800,
1435881600, 1425168000, 1438473600, 1417478400, 1435881600), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), CustomerID = c(7033, 7033, 9040, 17472,
35099, 39778), Application = c("Incoming Call", "Incoming Call",
"Incoming Call", "Incoming Call", "Incoming Call", "Incoming Call"
), CustomerType = c("Private", "Private", "Private", "Private",
"Private", "Private")), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
AND
Response <- structure(list(CampaignStrategyID = c(512345, 512345, 512345,
121212, 512345, 121212), CustomerID = c(836, 1070, 1390, 2970,
3479, 3646), ResponseDate = structure(c(1441065600, 1441065600,
1431129600, 1435881600, 1420502400, 1417392000), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), ResponseCode = c(1, 1, 1, 3, 2, 1)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
Код, используемый для объединенияи рассчитать разницу времени было:
DF <- inner_join(Calls,Response,by="CustomerID") %>%
mutate(days=as.numeric(difftime(ResponseDate,CRMEventStartDate,units = "days")))