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

使用自定义数值更新R数据集:扩展2012-2013年季度数据

解决方案

方法一:基础R实现

基于原数据集复制出2012、2013年的对应数据,再合并到原数据集中:

# 原数据集定义
df <- data.frame(id = c(1,2,1,2),
                 year = c(2010,2010,2011,2011),
                 quarter = c("2010-q1","2010-q2","2011-q1","2011-q2"),
                 price = c(10,50,10,50))

# 生成2012年数据:复制原数据后替换年份和季度
df_2012 <- df
df_2012$year <- 2012
df_2012$quarter <- gsub("201[01]", "2012", df_2012$quarter)

# 生成2013年数据:同理替换年份和季度
df_2013 <- df
df_2013$year <- 2013
df_2013$quarter <- gsub("201[01]", "2013", df_2013$quarter)

# 合并原数据与新增数据
df_expanded <- rbind(df, df_2012, df_2013)

gsub("201[01]", "2012", ...) 可批量替换季度字符串中的年份部分,无需手动修改每一行的季度值,更高效。


方法二:tidyverse工具包实现

借助dplyr和tidyr的函数,更简洁地生成扩展数据集:

library(dplyr)
library(tidyr)

df <- data.frame(id = c(1,2,1,2),
                 year = c(2010,2010,2011,2011),
                 quarter = c("2010-q1","2010-q2","2011-q1","2011-q2"),
                 price = c(10,50,10,50))

df_expanded <- df %>%
  group_by(id, price) %>%  # 按id和价格分组,保证每个id的价格不变
  expand(
    year = 2010:2013,      # 生成目标年份范围
    quarter = paste0(year, "-q", rep(1:2, times = length(year)))  # 拼接对应季度
  ) %>%
  ungroup()

这种方法直接通过expand生成所需的年份和季度组合,无需手动复制数据集,代码更简洁易维护。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:20:38