Сравнение дат символов по столбцам в R - PullRequest
1 голос
/ 21 сентября 2019

У меня есть 3 желаемых «переменных» (даты), которые я хочу сравнить по всему набору данных.Моя первая переменная состоит из двух столбцов, один с форматом «% Y-% M-% D», а второй - с форматом «% h:% m».Моя вторая переменная находится в двух столбцах, один с: «% Y-% M-% D», а второй столбец с форматом «% h:% m».Моя третья переменная имеет формат: «% Y-% M-% D% h:% m:% s» (один столбец).

К сожалению, все эти столбцы являются символами.Я попытался объединить столбцы для желаемых переменных 2 и 3 с lubridate, чтобы они были похожи на мою третью переменную: df$new1<-with(df, ymd(old_date)+ hms(old_time)), df$new2<-with(df, ymd(old_date)+ hms(old_time)), а затем преобразовал мои три переменные в POSIXct.После этого я хочу пометить наблюдения, где дата в переменной 3 больше, чем даты в переменных 1 и 2, я использовал: df1 <- mutate(df, flag = ifelse(var3>=new2 & var3>=new1, 1, 0) )
, но я был очень неудачным (необработанные даты, где var3 явно нижечем var2 помечены и т. д.).Я думаю, что моя проблема в Vars 1 и 2. Любая помощь будет принята с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 21 сентября 2019

Если это все символьные столбцы, мы можем использовать paste для объединения столбцов и с помощью anytime преобразовать столбцы в класс DateTime

library(dplyr)
library(stringr)
library(anytime)
df1 %>%
   mutate(new1 = anytime(str_c(old_date1, old_time1, sep= ' ')),
          new2 = anytime(str_c(old_date2, old_time2, sep= ' ')),
          new3 = anytime(str_c(old_date3, old_time3, sep=' ')),
          flag = as.integer(new3 > new2 & new3 > new1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...