r语言 - 将小时时间序列数据帧转换为单个小时的多个数据帧



我有一个一年中每小时气象站数据的数据帧列表。我想把这些数据分成几个数据帧,每个数据帧都有来自所有气象站的同一小时点的数据。所以一年就是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])

,此操作有效。但是当我试着在所有的电台运行它时,它花了很长时间。希望有人能缩短以上的计算时间。谢谢你

通常将所有数据保存在一个数据框中会更好。

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将有一个所有台站组合在一起的一年中每小时的数据帧。

最新更新