首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将小时时间序列数据帧转换为单个小时的多个数据帧

将小时时间序列数据帧转换为单个小时的多个数据帧
EN

Stack Overflow用户
提问于 2021-02-10 08:45:49
回答 1查看 48关注 0票数 0

我有一个在一年内每小时气象站数据的数据帧列表。我想把这些数据分割成数据帧,其中每个数据帧都有来自所有气象站的数据,每小时都有相同的时间点。因此,一年内,这将是24小时* 365 (天)= 8760个数据帧。通过这种方式,我可以使用所有气象站的数据创建一个特定小时的地块。

这是我的方法,需要很长时间来计算。我有大约300个气象站的每小时数据,所以这是很多数据。

list_of_station_df:时间序列站数据帧列表(每小时)

list_of_all_hourly_station_df:数据帧列表,其中每个df都有包含最终结果的来自所有气象站的数据(在每次迭代中继续添加此数据)。

代码语言:javascript
运行
复制
# 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]) )上迭代时,这是可行的。

但是当我试着在所有的车站运行它需要很长的时间。希望有人能缩短上面的计算时间。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 09:02:26

通常情况下,最好将所有数据保存在一个dataframe本身。

代码语言:javascript
运行
复制
combine_df <- do.call(rbind, list_of_station_df)

您应该能够使用combine_df本身完成大部分事情,甚至可以获得每小时的数据格式。

代码语言:javascript
运行
复制
list_of_all_hourly_station_df <- split(combine_df, format(combine_df$time, '%Y-%m-%d %H'))

list_of_all_hourly_station_df将为所有电视台一年中的每一个小时提供一份数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66133534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档