Новый пользователь R здесь - у меня есть много CSV-файлов, содержащих метки времени (date_time) в одном столбце и показания температуры в другом. Я пытаюсь написать функцию, которая определяет формат date_time, а затем меняет его на другой формат. Из-за способа сбора данных формат даты / времени отличается в некоторых файлах .csv. Я хочу, чтобы функция изменила дату и время для всех файлов в один и тот же формат.
Формат даты и времени, который я хочу:% m /% d /% y% H:% M:% S Формат даты и времени, который я хочу изменить выше: "% y-% m-% d% H:% M:% S"
> head(file1data)
x date_time temperature coupler_d coupler_a host_con stopped EoF
1 1 18-07-10 09:00:00 41.137 Logged
2 2 18-07-10 09:15:00 41.322
3 3 18-07-10 09:30:00 41.554
4 4 18-07-10 09:45:00 41.832
5 5 18-07-10 10:00:00 42.156
6 6 18-07-10 10:15:00 42.755
> head(file2data)
x date_time temperature coupler_d coupler_a host_con stopped EoF
1 1 07/10/18 01:00:00 PM 8.070 Logged
2 2 07/10/18 01:15:00 PM 8.095
3 3 07/10/18 01:30:00 PM 8.120
4 4 07/10/18 01:45:00 PM 8.120
5 5 07/10/18 02:00:00 PM 8.020
6 6 07/10/18 02:15:00 PM 7.795
file2data имеет правильный формат. file1data неверен.
Я пытался использовать логику для определения и замены формата даты, например,
file1data %>%
if(str_match_all(date_time,"([0-9][0-9]{2})[-.])")){
format(as.POSIXct(date_time,format="%y-%m-%d %H:%M:%S"),"%m/%d/%y %H:%M:%S")
}else{format(date_time,"%m/%d/%y %H:%M:%S")}
, но это не сработало, я получаю следующие ошибки:
Error in if (.) str_match_all(date_time, "([0-9][0-9]{2})[-.])") else { :
argument is not interpretable as logical
In addition: Warning message:
In if (.) str_match_all(date_time, "([0-9][0-9]{2})[-.])") else { :
the condition has length > 1 and only the first element will be used
Есть идеи?