当前位置:  开发笔记 > 编程语言 > 正文

使用R中的循环重复值

如何解决《使用R中的循环重复值》经验,为你挑选了1个好方法。



1> Heroka..:

您基本上需要按客户名称拆分数据集,然后根据每个客户的数据创建新的数据框.我们通过在开始年份添加0:(Years-1)来完成此操作.-1表示起始年份.最后,我们将这些绑定在一起.我们可以在base-R中执行此操作:

res <- do.call(rbind,lapply(split(df,df$CustName),function(x){
  res <- data.frame(custName=x$CustName,
                    Year=x$MinYear+0:(x$Years-1))
  res
}))

# > res
# custName Year
# a.1        a 1995
# a.2        a 1996
# a.3        a 1997
# a.4        a 1998
# b.1        b 1992
# b.2        b 1993
# c          c 1998

我们可以对data.table做同样的事情,使代码更具可读性:

library(data.table)
DT <- as.data.table(df)

res <- DT[,.(Year=MinYear+0:(Years-1)),CustName]

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有