Итак, у меня есть следующий фрейм данных:
dates <- structure(list(Date = c("2018-01-03", "2018-01-03", "2018-01-04",
"2018-01-08", "2018-01-09")), row.names = c(NA, 5L), class = "data.frame")
И я могу «успешно» сгенерировать время восхода / захода солнца для каждой даты следующим образом:
library(httr)
library(jsonlite)
dates %>%
rowwise() %>%
mutate(sunrise = as.character(fromJSON(rawToChar(GET(paste0("https://api.sunrise-sunset.org/json?lat=40.730610&lng=-73.935242&date=", Date))$content))$results[1]),
sunset = as.character(fromJSON(rawToChar(GET(paste0("https://api.sunrise-sunset.org/json?lat=40.730610&lng=-73.935242&date=", Date))$content))$results[2])
)
И таким образом:
Date sunrise sunset
2018-01-03 12:19:53 PM 9:41:13 PM
2018-01-03 12:19:53 PM 9:41:13 PM
2018-01-04 12:19:52 PM 9:42:08 PM
2018-01-08 12:19:27 PM 9:46:00 PM
2018-01-09 12:19:15 PM 9:47:01 PM
Проблема здесь в том, что даты указаны в UT C (я думаю). Я нахожусь здесь в Нью-Йорке, поэтому время, указанное выше, на 4 часа вперед. Я написал следующее, чтобы исправить проблему, но я думаю, что слишком усложняю, чтобы перенести это время на 4 часа назад.
library(data.table)
dates %>%
rowwise() %>%
mutate(sunrise = as.character(as.ITime(as.character(fromJSON(rawToChar(GET(paste0("https://api.sunrise-sunset.org/json?lat=40.730610&lng=-73.935242&date=", Date))$content))$results[1])
)-18000),
sunset = as.character(as.ITime(as.character(fromJSON(rawToChar(GET(paste0("https://api.sunrise-sunset.org/json?lat=40.730610&lng=-73.935242&date=", Date))$content))$results[2])
)-18000)
)
Но теперь я потерял AM / PM.
Date sunrise sunset
2018-01-03 07:19:53 04:41:13
2018-01-03 07:19:53 04:41:13
2018-01-04 07:19:52 04:42:08
2018-01-08 07:19:27 04:46:00
2018-01-09 07:19:15 04:47:01
Короче говоря, как я могу сделать эту работу, чтобы я мог получить дату того, что API выплевывает во время NY C.