Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于列在数据集中重复行,但增加行数_R_Dataframe_Rep - Fatal编程技术网

R 基于列在数据集中重复行,但增加行数

R 基于列在数据集中重复行,但增加行数,r,dataframe,rep,R,Dataframe,Rep,我有一个数据集,其中有项目名称、开始年份和合同期限。我需要把这个数据集发展成时间序列。例如,我的数据集中有一行是:项目A,2003年开始,合同期限5。我想根据合同条款重复每一行。我的数据集如下所示: Project Name Start Year Contract Term A 2003 5 B 2013 3 C 2000

我有一个数据集,其中有项目名称、开始年份和合同期限。我需要把这个数据集发展成时间序列。例如,我的数据集中有一行是:项目A,2003年开始,合同期限5。我想根据合同条款重复每一行。我的数据集如下所示:

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
上使用分组。