тайная символьная дата в POSIXct - PullRequest
0 голосов
/ 25 октября 2018

Я импортировал некоторые данные из пакета RNCEP, который включает в себя отметку даты и времени (в UTC) в виде символа:

> head(df.weather[1])
       datetime
1 2018_06_01_00
2 2018_06_01_00
3 2018_06_01_00
4 2018_06_01_00
5 2018_06_01_00
6 2018_06_01_00

, где год, месяц, дата и час разделены подчеркиванием.

Я бы хотел изменить эти даты на POSIXct, и я могу использовать следующее для получения даты:

df.weather$date<-as.POSIXct(
  str_replace_all(df.weather$datetime, "_", "-"), 
  format="%Y-%m-%d") 
head(df.weather[11])
       date
1 2018-06-01
2 2018-06-01
3 2018-06-01
4 2018-06-01
5 2018-06-01
6 2018-06-01

Однако, если я изменю формат на "% Y-% m-% d% H "или"% Y-% m-% d% H:% M ", я получаю следующее:

  date
1 <NA>
2 <NA>
3 <NA>
4 <NA>
5 <NA>
6 <NA>

Как я могу настроить свой код для получения информации о часах в переменную POSIXct?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Функция, которая отображает значения даты и времени, имеет значение не печатать минуты, секунды или часы для времени в полночь:

# First build a test vector of character values
 times <- scan(text="2018_06_01_00
  2018_06_01_00
  2018_06_01_00
  2018_06_01_00
  2018_06_01_00
  2018_06_01_00", what="")
#Read 6 items

# Now run your code
 realTimes<-as.POSIXct(
  str_replace_all(times, "_", "-"), 
  format="%Y-%m-%d") 
 realTimes

#[1] "2018-06-01 PDT" "2018-06-01 PDT" "2018-06-01 PDT" "2018-06-01 PDT"
#[5] "2018-06-01 PDT" "2018-06-01 PDT"

 dput(realTimes)
structure(c(1527836400, 1527836400, 1527836400, 1527836400, 1527836400, 
1527836400), class = c("POSIXct", "POSIXt"), tzone = "")

@ Комментарий ANG был полезен (предлагая использовать format = "% Y_%m_% d_% H "вместо более неуклюжего str_replace -ment с" - "), но он тоже пропустил центральную проблему.

0 голосов
/ 25 октября 2018

Вы можете попробовать это as.POSIXct(strptime("2010_10_31_01", "%Y_%m_%d_%H")).Возможно, вы хотите добавить часовой пояс, используя аргумент tz.Если час равен 00, как в вашем примере, время автоматически удаляется.Попробуйте тот же код с 01.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...