Как обрабатывать пустые позиции при конвертации дат в 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('',' ',' '))