Неправильная замена строк в R - PullRequest
0 голосов
/ 17 марта 2020

Мне нужно заменить неуклюжие строки в R, особенно времена, которые находятся в странном формате. Данные выглядят так:

      Date |    Time | AmbientTemp
2000-01-01 | 11:00 a |          25
2000-01-01 | 11:30 a |        25.5 
2000-01-01 | 11:00 p |          20
2000-01-01 | 11:30 p |        19.5

a и p означают AM и PM соответственно (очевидно).

lubridate и base R не могут преобразовать эти даты в правильном формате. Таким образом, я обратился к громоздкой функции str_replace_all (из пакета stringr), чтобы преобразовать ВСЕ мои времена в большом кадре данных:> 130000 записей.

Примеры функций:

uploadDat$Time = str_replace_all(uploadDat$Time,"11:00 a","11:00")
uploadDat$Time = str_replace_all(uploadDat$Time,"11:00 p","23:00")

Я изменил класс времени, используя as.character() перед применением функций stringr.

Результат идеален, за исключением 11'o часов (как указано выше), которые конвертируются следующим образом:

      Date |   Time | AmbientTemp
2000-01-01 | 101:00 |          25
2000-01-01 | 101:30 |        25.5 
2000-01-01 | 113:30 |          20
2000-01-01 | 113:30 |        19.5

Почему эти данные c раз преобразованы неправильно?

1 Ответ

2 голосов
/ 17 марта 2020

Мы можем paste "m" в конце времени, преобразовать его в POSIXct

format(as.POSIXct(paste0(df$Time, "m"), format = "%I:%M %p"), "%T")
#[1] "11:00:00" "11:30:00" "23:00:00" "23:30:00"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...