如何将R语言年度数据集转换为月度重复数据集?
解决方法:将年度数据扩展为月度重复行
给你两种不用循环的简便实现方式,适合R语言新手:
方法一:基础R原生实现
直接利用行索引重复的方式,一行代码就能生成目标数据框:
# 基于原df生成扩展后的df2 df2 <- df[rep(seq_len(nrow(df)), each = 12), ] # 重置行号(可选,让行号从1开始连续) rownames(df2) <- NULL
运行后print(df2)会得到:
year xxx yyy 1 2016 1 4 2 2016 1 4 ... 35 2018 3 6 36 2018 3 6
原理:seq_len(nrow(df))生成原数据框的行号(1、2、3),rep(..., each=12)让每个行号重复12次,最后用这个重复后的索引提取原数据框的行,就自动完成了所有列的对应重复。
方法二:tidyverse工具包实现
如果你正在学习tidyverse生态,用dplyr的uncount()函数更直观:
# 先加载dplyr(如果没安装先运行install.packages("dplyr")) library(dplyr) # 生成扩展数据框 df2 <- df %>% uncount(12)
uncount()的参数直接指定每行需要重复的次数,代码更简洁易读,生成的结果和基础R方法完全一致。
内容的提问来源于stack exchange,提问作者betahat
相关产品推荐
相关产品推荐

