我有以下问题:
为了分析天气对公民科学网页志愿者观察自然(动物、植物等)的影响,我需要将每日观察结果与最近气象站的天气信息相匹配。我正在使用rdwd(用于德国气象服务的数据)并且已经设法将每个观测位置与最近的气象站结合起来。所以我现在有一个这样的数据框(my_df_example),有 100 行:
ID Date lat long Station_id Stationname
1317186439 2019-05-03 47.77411 9.540569 4094 Weingarten, Kr. Ravensburg
-2117439060 2019-05-19 48.87217 9.396229 10510 Winterbach/Remstal
-630183789 2019-04-30 48.86810 9.285427 4928 Stuttgart (Schnarrenberg)
-390672435 2019-05-10 50.71187 8.706279 1639 Giessen/Wettenberg
262182713 2019-05-01 50.82548 8.892961 3164 Coelbe, Kr. Marburg-Biedenkopf
-373270631 2019-05-24 51.61666 7.950153 5480 Werl
使用输入(my_df_example):
structure(list(ID = c(1317186439L, -2117439060L, -630183789L, -390672435L, 262182713L, -373270631L,...
Datum = structure(c(1556841600, 1558224000, 1556582400, 1557446400, 1556668800, 1558656000, 1558224000, 1557532800,..., class = c("POSIXct", "POSIXt"), tzone = "UTC"),
lat = c(47.7741093721703, 48.8721672952686, 48.8681024146134, 50.7118683229165, 50.8254843786222, 51.6166575725419, 48.7357007677785,...
long = c(9.54056899481679, 9.3962287902832, 9.28542673587799, 8.70627880096436, 8.89296054840088, 7.95015335083008, 11.3105964660645,...
Stations_id = c(4094L, 10510L, 4928L, 1639L, 3164L, 5480L, 3484L,...
Stationsname = c("Weingarten, Kr. Ravensburg", "Winterbach/Remstal", "Stuttgart (Schnarrenberg)", "Giessen/Wettenberg", "Coelbe, Kr. Marburg-Biedenkopf", "Werl",...
row.names = c("58501", "89910", "69539", "24379", "45331", "77191", "50028",
class = "data.frame")
我现在需要做的是获取每个站点在该特定日期的天气信息。我正在尝试使用 R 中的 rdwd 包来执行此操作。到目前为止,我尝试了两种选择,但都没有成功。
选项1:
urls <- selectDWD(name=my_df_final$Stationsname, res="daily", var="kl", per="historical", outvec=TRUE)
kl <- dataDWD(urls[1:100])
这给了我一个包含 100 个列表的列表。100 个列表中的每个列表都包含某个站点记录的每一天的天气数据。所以我需要从这些列表中过滤数据,以便日期与 my_df_example 中的日期匹配。我不知道如何从列表中的列表中提取信息。
选项 2:
stat <- my_df_example$Stationname
link <- selectDWD(c(stat), res="daily", var="kl", per="hist")
file <- dataDWD(link, read=FALSE)
clim <- readDWD(file, varnames=TRUE)
这里的问题是,dataDWD 不适用于列表。由于“链接”包含多个站名,因此它不仅仅是一个向量。
我真的不知道这些选项中的一个是否是正确的方式,或者替代方案是否更有意义。
感谢您提供的任何建议。