Если они все 2000 или более поздней версии, попробуйте следующее:
x <- c("10/01/00", "10/01/00", "10/20/2000", "05/13/2000") # test data
xx <- as.Date(sub("/(..)$", "/20\\1", x)); xx
## [1] "10/01/2000" "10/01/2000" "10/20/2000" "05/13/2000"
Если цель состоит в том, чтобы взять самую последнюю дату, то это будет работать на даты, все ли 2000 или более поздней версии при условии, что нет даты более 100 лет. Предположим, что мы уже выполнили указанную выше строку, если все даты в будущем, то самая последняя дата должна быть в 1900-х годах, поэтому повторите суб, но с 19 вместо 20 и возьмите max; в противном случае, дата должна быть не более 20xx так remvove даты в будущем и принять максимум того, что осталось:
if (all(xx > Sys.Date()) max(as.Date(sub("/(..)$", "/19\\1", x)))
else max(xx[xx <= Sys.Date()])
Update Некоторые улучшения.
Я, кажется, помню, что пакет «lubridate» имеет некоторые возможности для формата дата догадок. Если это всего лишь два разных формата, было бы просто сначала исправить «короткие», а затем преобразовать. –
Добро пожаловать в переполнение стека! Чтобы помочь отладить проблему, это поможет увидеть ввод и то, что он выводит. – Jonathan