在R语言中按日期拆分生成独立数据集的方法
按日期拆分数据集为每日独立子集的解决方案
方法1:基础R split() 函数(最简便)
先确保你的date列是日期格式(如果不是先做转换):
dataset$date <- as.Date(dataset$date)
直接按日期拆分,得到一个命名列表,每个元素对应单日完整数据集:
daily_dfs <- split(dataset, dataset$date)
- 调用某一天的数据:比如取2015年1月1日的数据,用
daily_dfs[["2015-01-01"]] - 列表的名字就是对应的日期,方便快速索引
方法2:tidyverse 风格(dplyr group_split())
如果你习惯用dplyr,推荐用group_split(),拆分后返回列表:
library(dplyr) # 按日期拆分,.keep=TRUE保留所有列 daily_dfs <- dataset %>% mutate(date = as.Date(date)) %>% group_split(date, .keep = TRUE) # 给列表元素命名(可选,方便识别) names(daily_dfs) <- unique(dataset$date)
方法3:将每日数据集单独存入全局环境(生成独立对象)
如果需要像手动写df <- subset(...)那样,生成df_20150101这类独立的数据集对象,可以用list2env():
# 先拆分得到命名列表 daily_dfs <- split(dataset, as.Date(dataset$date)) # 重命名列表元素(可选,改成无横杠的简洁格式) names(daily_dfs) <- paste0("df_", gsub("-", "", names(daily_dfs))) # 将列表中的每个元素导入全局环境 list2env(daily_dfs, envir = .GlobalEnv)
执行后你就能直接调用df_20150101、df_20150102等独立数据集。
以上所有方法都会保留单日的完整观测数据,完全满足你后续绘图的需求,不需要手动编写365条筛选代码。
内容的提问来源于stack exchange,提问作者Buckethead
相关产品推荐
相关产品推荐

