我有一个在一年内每小时气象站数据的数据帧列表。我想把这些数据分割成数据帧,其中每个数据帧都有来自所有气象站的数据,每小时都有相同的时间点。因此,一年内,这将是24小时* 365 (天)= 8760个数据帧。通过这种方式,我可以使用所有气象站的数据创建一个特定小时的地块。
这是我的方法,需要很长时间来计算。我有大约300个气象站的每小时数据,所以这是很多数据。
list_of_station_df:时间序列站数据帧列表(每小时)
list_of_all_hourly_station_df:数据帧列表,其中每个df都有包含最终结果的来自所有气象站的数据(在每次迭代中继续添加此数据)。
# Start by adding the hourly df's for the first station
list_of_all_hourly_station_df = split(list_of_station_df[[1]], list_of_station_df[[1]]$time)
for(station_df in list_of_station_df[-1]) {
# Get a list of hourly df's for this station (each df will have one row)
list_of_hourly_station_df <- split(station_df, station_df$time)
# Merge our list with all the previous hourly data with the above
list_of_all_hourly_station_df <- mapply(rbind, list_of_all_hourly_station_df,
list_of_hourly_station_df, SIMPLIFY=FALSE)
}
当我只在几个站点(即for(station_df in list_of_station_df[2:5])
)上迭代时,这是可行的。
但是当我试着在所有的车站运行它需要很长的时间。希望有人能缩短上面的计算时间。谢谢
发布于 2021-02-10 09:02:26
通常情况下,最好将所有数据保存在一个dataframe本身。
combine_df <- do.call(rbind, list_of_station_df)
您应该能够使用combine_df
本身完成大部分事情,甚至可以获得每小时的数据格式。
list_of_all_hourly_station_df <- split(combine_df, format(combine_df$time, '%Y-%m-%d %H'))
list_of_all_hourly_station_df
将为所有电视台一年中的每一个小时提供一份数据。
https://stackoverflow.com/questions/66133534
复制相似问题