Как указать формат даты в r?

#r

Вопрос:

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

 Date    Longitude   Latitude    Elevation   Max Temperature Min Temperature Precipitation   Wind    Relative Humidity   Solar
1/1/1979    40.625  10.1473999  594 31.784  14.711  0   1.34012963  0.332977248 23.69273112
1/2/1979    40.625  10.1473999  594 30.548  15.001  0   1.440527678 0.445704584 23.2192062
1/3/1979    40.625  10.1473999  594 30.029  18.724  0.020599366 1.950813349 0.532062642 18.34447248
1/4/1979    40.625  10.1473999  594 31.311  17.802  0   2.150911946 0.466495869 23.07077748
 

я попробовал использовать as.Дата, но результат выглядит следующим образом:

 gewane_t$Date <- as.Date(gewane_t$Date,format("%m/%d/%Y"))
 

Ошибка в charToDate(x) :
символьная строка не имеет стандартного однозначного формата

любое решение.

с уважением,

Комментарии:

1. Вместо as.Date(gewane_t$Date, format("%m/%d/%Y") того, чтобы пытаться as.Date(gewane_t$Date, format = "%m/%d/%Y") .

2. Это и есть результат. Любые предложения.gewane_t$Дата

3. Это странное сообщение. Это наводит на мысль, что gewane_t$Date это численно. Из приведенной выше таблицы и вашего сообщения об ошибке я бы предположил, что это символьная строка. Был ли этот файл открыт в Excel и сохранен? Excel показывает дату, но в фоновом режиме это просто число.

4. да, он был сохранен в excel.

5. Ах, хорошо, если столбец был в формате даты, и вы сохраните его в виде csv файла, то он будет сохранен в виде числа (т. Е. Количество дней по состоянию на 01-01-1900 на компьютере с Windows и 01-01-1904 на компьютере Mac). Вы можете попробовать: as.Date(gewane_t$Date, origin = "1900-01-01")

Ответ №1:

Используйте lubridate dmy функцию. Эта функция автоматически возвращает объекты класса POSIXct и будет работать либо с факторами, либо с символами.

Предполагая, что ваш фрейм данных называется gewane_t обновлением кода dmy до mdy

 library(lubridate)
gewane_t$Date <- mdy(gewane_t$Date)
 

Выход:

   Date       Longitude Latitude Elevation   Max Temperature    Min Temperature_1 Precipitation  Wind
  <date>         <dbl>    <dbl>     <dbl> <dbl>       <dbl>  <dbl>         <dbl>         <dbl> <dbl>
1 1979-01-01      40.6     10.1       594  31.8        14.7 0               1.34         0.333  23.7
2 1979-02-01      40.6     10.1       594  30.5        15.0 0               1.44         0.446  23.2
3 1979-03-01      40.6     10.1       594  30.0        18.7 0.0206          1.95         0.532  18.3
4 1979-04-01      40.6     10.1       594  31.3        17.8 0               2.15         0.466  23.1
 

Комментарии:

1. Этот результат пришел: gewane_t$Дата Форматы не найдены.

2. Хорошо, я проверю

3. Я проверил. Вы установили lubridate . install.packages("lubridate") ? Это имя вашего gewane_t фрейма данных, то оно должно работать. Пожалуйста, дайте мне знать.

4. Это тот же самый результат. > setwd(«C:/Users/c/OneDrive/Desktop/Hydroclimatology/CFSR данные для гидроклиматологии/для Gewane») >> gewanet >><- read.csv(«weatherdata-101406.csv»,TRUE,»,») > класс(gewanet) [1] «data.frame» <- read.csv(«weatherdata-101406.csv»,TRUE,»,») >> библиотека(lubridate) Прикрепление пакета: ‘lubridate’ Следующие объекты маскируются из «пакета:база»: дата, пересечение, setdiff, объединение > gewanet$Дата > Форматы не найдены.

5. Это потому, что мой формат данных в мм/дд/гггг?