Выполнение функции getSunlightTimes в R с фреймом данных? - PullRequest
0 голосов
/ 20 апреля 2019

Я надеюсь, что вы можете поддержать меня с помощью функции getSunlightTimes. У меня есть кадр данных уровня пикселей ("latlon2") с широтой ("lat"), долготой ("lon") и одной датой ("date") в формате YYYY-MM-DD. Данные охватывают континентальную часть США, и у меня также есть переменная кода штата во фрейме данных.

Чтобы получить переменную date в качестве переменной класса даты, я выполнил:

latlon2$date=as.Date(latlon2$d2003s)

Я пытаюсь использовать getSunlightTimes для определения времени восхода и захода солнца для каждого пикселя в назначенную дату. Тем не менее, мне трудно заставить эту функцию работать. Об этой команде не так много информации, кроме справочных руководств R, поэтому я надеюсь, что некоторые из вас уже поработали с ней и могут предложить свои предложения, основываясь на моем подходе.

Сначала я попытался использовать функцию getSunlightTimes, обозначающую каждый столбец широты / долготы / даты в моем фрейме данных

sunrise2003CET=getSunlightTimes(date="latlon2$date", lat="latlon2$lat", lon="latlon2$lon", tz="CET", keep = c("sunrise", "sunset"))

R возвращает ошибку:

Ошибка в getSunlightTimes (date = "latlon2 $ date2", lat = "latlon2 $ lat", : date должен быть объектом Date (класс Date)

Что разочаровывает, так это то, что когда я смотрю на класс (latlon2 $ date), R проверяет, что столбец является классом "Date"!

Далее я попытался обозначить только фрейм данных:

sunrise2003CET=getSunlightTimes(data="latlon2", tz="CET", keep = c("sunrise", "sunset"))

R возвращает ошибку:

Ошибка в .buildData (дата = дата, широта = широта, долгота = долгота, данные = данные): all (c ("date", "lat", "lon")% в% colnames (data)) не TRUE

Это кажется странным, потому что я назвал столбцы в кадре данных "date", "lat", "lon", но, возможно, ошибка связана с тем, что в кадре данных есть другие переменные (например, код состояния) .

Я пытаюсь выполнить эту задачу в течение нескольких дат в течение 15 лет (и четырех часовых поясов), поэтому любые предложения о том, как это запустить, а также эффективно работать, очень ценятся!

Спасибо большое!

Colette

1 Ответ

0 голосов
/ 20 апреля 2019

Проблема с кавычками.Когда вы пишете

sunrise2003CET=getSunlightTimes(date="latlon2$date", 
                                lat="latlon2$lat",
                                lon="latlon2$lon", 
                                tz="CET", 
                                keep = c("sunrise", "sunset"))

, вы не должны помещать выражения для аргументов date, lat и lon в кавычки, потому что тогда R будет видеть их как строки.(Вы можете попробовать class("latlon2$date"), чтобы увидеть это.) Просто напишите это как

sunrise2003CET=getSunlightTimes(date=latlon2$date, 
                                lat=latlon2$lat,
                                lon=latlon2$lon, 
                                tz="CET", 
                                keep = c("sunrise", "sunset"))
...