Как насчет этого решения. Некоторые примеры данных:
dat <- read.table(header=TRUE, stringsAsFactors=FALSE, text='
ID Diagnosis Procedure
1 2005-09-09 2008-04-09
1 2006-05-09 2007-08-08
2 2007-07-02 2007-08-01
2 2007-07-02 2009-08-05
2 2008-05-08 2007-08-10')
Конвертируйте их в Date
объекты. (Поскольку строки хорошо отформатированы, это может сработать просто без преобразования их в даты. Я думаю, это моя привычка делать из них «правильный объект даты».)
dat$Diagnosis <- as.Date(dat$Diagnosis)
dat$Procedure <- as.Date(dat$Procedure)
min
возвращает одно минимальное значение для вектора. pmin
возвращает попарные минимумы между векторами:
min(c(1,1,3,4), c(2,2,4,3))
# [1] 1
pmin(c(1,1,3,4), c(2,2,4,3))
# [1] 1 1 3 3
Мы можем использовать это для сравнения двух столбцов:
tmp1 <- pmin(dat$Diagnosis, dat$Procedure)
tmp2 <- pmax(dat$Diagnosis, dat$Procedure)
и сохраните их на месте:
dat$Diagnosis <- tmp1
dat$Procedure <- tmp2