用数据帧在R中执行getSunlightTimes函数?

问题描述 投票:0回答:1

我希望你可以使用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会验证该列是否为“日期”类!

接下来,我尝试仅指定数据框:

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

R返回错误:

.build Data中的错误(data = data,lat = lat,lon = lon,data = data):所有(c(“date”,“lat”,“lon”)%in colnames(data))不为TRUE

这看起来很奇怪,因为我在数据框“date”,“lat”,“lon”中命名了列,但可能错误是由于数据框中还有其他变量(例如状态代码)。

我试图在15年(以及四个时区)的几个日期执行此任务,因此非常感谢有关如何运行以及高效运行的任何建议!

非常感谢!

科莱特

r spatial
1个回答
0
投票

问题出在引号上。当你写作

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

你不应该将datelatlon参数的表达式放在引号中,因为那时R会将它们视为字符串。 (您可以尝试使用class("latlon2$date")来查看此内容。)只需将其写为

sunrise2003CET=getSunlightTimes(date=latlon2$date, 
                                lat=latlon2$lat,
                                lon=latlon2$lon, 
                                tz="CET", 
                                keep = c("sunrise", "sunset"))
© www.soinside.com 2019 - 2024. All rights reserved.