You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R将酒店预订DataFrame按年份和月份拆分?

按年份/月份批量拆分酒店预订数据的R代码

步骤1:准备工作(安装并加载包)

首次运行需安装读取谷歌表格和数据处理的工具包,之后直接加载即可:

# 首次运行安装包
install.packages(c("googlesheets4", "tidyverse"))

# 加载包
library(googlesheets4)
library(tidyverse)

步骤2:读取数据

读取你提供的酒店预订数据:

df <- read_sheet("17ebOpYgAxA8EqECkZZT4F5blHF7gYCDKAPgLM5ZWHpk")

步骤3:拆分成年份独立DataFrame列表

用原生split()函数按年份列(假设数据中年份列名为arrival_date_year)一次性拆分,得到一个列表,每个元素对应一个年份的完整数据:

# 按年份拆分
year_dfs <- split(df, df$arrival_date_year)
  • 访问方式:比如查看2015年的数据,直接用year_dfs$2015``(年份为字符串格式,需加反引号)

步骤4:进一步拆分为年份下的月度DataFrame

用purrr::map()批量处理每个年份的DataFrame,再按月份拆分,得到「年份→月份」的嵌套列表:

# 嵌套拆分:年份分组下再拆分为月度
year_month_dfs <- map(year_dfs, ~split(.x, .x$arrival_date_month))
  • 访问方式:比如查看2015年1月的数据,用year_month_dfs$2015$January

步骤5:直接生成全局环境中的独立DataFrame(可选)

如果想把每个年月的数据框直接放到全局环境,方便直接调用(比如df_2015_January),可以用assign()批量生成:

# 批量创建以「年份-月份」命名的独立DataFrame
walk2(names(year_dfs), year_dfs, function(year, data) {
  # 拆分当前年份的月度数据
  month_dfs <- split(data, data$arrival_date_month)
  # 逐个存入全局环境
  walk2(names(month_dfs), month_dfs, function(month, df_month) {
    df_name <- paste0("df_", year, "_", month)
    assign(df_name, df_month, envir = .GlobalEnv)
  })
})

补充:如果没有现成的年月列

如果数据只有完整日期列(比如arrival_date),先用lubridate包提取年月:

library(lubridate)
# 转换日期格式(假设日期列是字符型)
df$arrival_date <- as.Date(df$arrival_date)
# 提取年份和月份名称
df$arrival_date_year <- year(df$arrival_date)
df$arrival_date_month <- month(df$arrival_date, label = TRUE) # 生成Jan/Feb这类格式的月份名

内容的提问来源于stack exchange,提问作者user19587849

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:55:17