r - 如何通过 R 中一个变量的变化以不同的次数复制每个观察值?

标签 r

我有以下数据集,我想复制每个观察值的次数等于(终止年 - 申请年),然后我想替换填充年 + 1 直到终止年。

l_c_final

id filing_year termination_year
1  1992         1995
2  2005         2009
3  1995         1997

预期输出:

id  filing_year  termination_year
1   1992         1995
2   1993         1995
3   1994         1995
4   1995         1995
5   2005         2009
6   2006         2009
7   2007         2009
8   2008         2009
9   2009         2009
10  1995         1997
11  1996         1997
12  1997         1997

尝试过:

l_c_fin_curr1 = l_c_final

l_c_fin_curr = l_c_fin_curr1[]
l_c_fin_curr = subset(l_c_fin_curr,filing_year==99999) # creating empty dataframe
for (i in 1:length(l_c_fin_curr1[,1])) {
    cur_yr = l_c_fin_curr1$filing_year[i]
    ter_yr = l_c_fin_curr1$termination_year[i]
    n = as.numeric(ter_yr - cur_yr)
    dim = dim(l_c_fin_curr)[1]
    l_c_fin_curr[(dim+1):(dim+n+1),] = l_c_fin_curr1[i,]
    l_c_fin_curr$filing_year[(dim+1):(dim+n+1)] = l_c_fin_curr$filing_year[(dim+1):(dim+n+1)] + (0:n)
}

我得到了上面代码假设的答案,但问题是我的数据集的大小是 400 万条记录,这需要超过 48 小时。所以我需要别人的帮助。

最佳答案

我们可以通过第 3 列和第 2 列的差异来复制行序列以创建“dfN”。将 'data.frame' 转换为 'data.table' (setDT(dfN)),按 'id' 分组,我们分配 (:=) 'filing_year'通过添加带有序列 (0:(.N-1)) 的“filing_year”的第一次观察。最后,将 'id' 更改为行的序列。

dfN <- df1[rep(seq_len(nrow(df1)), (df1[,3]- df1[,2]+1L)),]
library(data.table)
setDT(dfN)[, filing_year:=filing_year[1L]+0:(.N-1) ,id][, id:= 1:.N]
dfN
#    id filing_year termination_year
# 1:  1        1992             1995
# 2:  2        1993             1995
# 3:  3        1994             1995
# 4:  4        1995             1995
# 5:  5        2005             2009
# 6:  6        2006             2009
# 7:  7        2007             2009
# 8:  8        2008             2009
# 9:  9        2009             2009
#10:  10       1995             1997
#11:  11       1996             1997
#12:  12       1997             1997

关于r - 如何通过 R 中一个变量的变化以不同的次数复制每个观察值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34260783/

相关文章:

r - 如果没有y变量,则在x轴上的间隔上遮盖geom_density

r - 绘制密度差异语义数据集

r - 无法获取推文的纬度和经度值

r - 快速 R 查找表

r - 组内连续且唯一的编号

regex - 处理由天,小时,分钟和秒定义的持续时间,例如R中的 “1d 3h 2m 28s”

r - 在绘图末尾添加值标签

r - 如何在 R Shiny 中对动态渲染列表进行子集化?

r - 使用 group_split,将单个值添加到列表中的每个项目以循环和累加

r - 形式的奇怪失败()