Как обрабатывать пустые позиции при конвертации дат в R

У меня есть CSV-загрузка данных из системы управленческой информации. Есть некоторые переменные, которые являются датами и записываются в csv в виде строк в формате "2012/11/16 00:00:00".

После прочтения в файле csv я преобразовываю переменные даты в дату, используя функцию as.Date(). Это прекрасно работает для всех переменных, которые не содержат пустых элементов.

Для тех, которые содержат пустые элементы, я получаю следующее сообщение об ошибке: "строка символов не в стандартном однозначном формате"

Как я могу заставить R заменить пустые элементы чем-то вроде "0000/00/00 00:00:00", чтобы функция as.Date () не ломалась? Есть ли другие подходы, которые вы могли бы порекомендовать?

2 ответа

Решение

Если они строки, делает что-то так же просто, как

mystr <- c("2012/11/16 00:00:00","   ","")
mystr[grepl("^ *$",mystr)] <- NA
as.Date(mystr)

Работа? (Регулярное выражение "^ *$" ищет строки, состоящие из начала строки (^), ноль или более пробелов (*), за которым следует конец строки ($). В целом я думаю, что вы могли бы использовать "^[[:space:]]*$" захватывать другие виды пробелов (вкладки и т. д.)

Еще лучше, правильно вставьте NA, когда вы читаете в CSV:

read.csv(..., na.strings='')

или указать вектор всех значений, которые следует читать как NA...

read.csv(..., na.strings=c('','  ','   '))
Другие вопросы по тегам