R 基于列在数据集中重复行,但增加行数
我有一个数据集,其中有项目名称、开始年份和合同期限。我需要把这个数据集发展成时间序列。例如,我的数据集中有一行是:项目A,2003年开始,合同期限5。我想根据合同条款重复每一行。我的数据集如下所示:R 基于列在数据集中重复行,但增加行数,r,dataframe,rep,R,Dataframe,Rep,我有一个数据集,其中有项目名称、开始年份和合同期限。我需要把这个数据集发展成时间序列。例如,我的数据集中有一行是:项目A,2003年开始,合同期限5。我想根据合同条款重复每一行。我的数据集如下所示: Project Name Start Year Contract Term A 2003 5 B 2013 3 C 2000
Project Name Start Year Contract Term
A 2003 5
B 2013 3
C 2000 2
Project Name Start Year Contract Term
A 2003 5
A 2004 5
A 2005 5
A 2006 5
A 2007 5
B 2013 3
B 2014 3
B 2014 3
C 2000 2
C 2001 2
我想要的结果应该是这样的:
Project Name Start Year Contract Term
A 2003 5
B 2013 3
C 2000 2
Project Name Start Year Contract Term
A 2003 5
A 2004 5
A 2005 5
A 2006 5
A 2007 5
B 2013 3
B 2014 3
B 2014 3
C 2000 2
C 2001 2
我试过:
rpsData <- rpsInput[rep(rownames(rpsInput), rpsInput$Contract.Term), ]
rpsData这里有两个步骤:
第一步,你知道:
rpsData <- rpsInput[rep(rownames(rpsInput), rpsInput$Contract.Term), ]
rpsData
# Project.Name Start.Year Contract.Term
# 1 A 2003 5
# 1.1 A 2003 5
# 1.2 A 2003 5
# 1.3 A 2003 5
# 1.4 A 2003 5
# 2 B 2013 3
# 2.1 B 2013 3
# 2.2 B 2013 3
# 3 C 2000 2
# 3.1 C 2000 2
只是想借阿南达的答案,改变一下
sequence(rpsInput$Contract.Term)
到
以获得您想要的输出
ProjectName<-c("A","B","C")
Start.Year<-c(2003,2013,2000)
Contract.Term<-c(5,3,2)
rpsInput<-data.frame(ProjectName,Start.Year,Contract.Term)
rpsData <- rpsInput[rep(rownames(rpsInput), rpsInput$Contract.Term), ]
rpsData$Start.Year <- rpsData$Start.Year + (sequence(rpsInput$Contract.Term)-1)
rpsData
# ProjectName Start.Year Contract.Term
#1 A 2003 5
#1.1 A 2004 5
#1.2 A 2005 5
#1.3 A 2006 5
#1.4 A 2007 5
#2 B 2013 3
#2.1 B 2014 3
#2.2 B 2015 3
#3 C 2000 2
#3.1 C 2001 2
projectname如果连续的Project.Name
对于Contract.Term
具有相同的值,这是否不会中断?为了安全起见,我想我们可以在Project.Name
上使用分组。