2

プロジェクト名、開始年、契約期間を持つデータセットがあります。このデータセットを時系列に展開する必要があります。たとえば、私のデータセットの 1 つの行は、プロジェクト 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

私が試してみました:

rpsData <- rpsInput[rep(rownames(rpsInput), rpsInput$Contract.Term), ]

しかし、これは契約期間内の数だけ各プロジェクトを繰り返すだけです。年を重ねる事が出来ません。

前もって感謝します!

4

2 に答える 2

2

ここでは、次の 2 つの手順を実行します。

ステップ 1:

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

ステップ 2 ではsequence、基本的な加算を使用します。

sequence(rpsInput$Contract.Term) ## This will be helpful...
#  [1] 1 2 3 4 5 1 2 3 1 2

rpsData$Start.Year <- rpsData$Start.Year + sequence(rpsInput$Contract.Term)
rpsData
#     Project.Name Start.Year Contract.Term
# 1              A       2004             5
# 1.1            A       2005             5
# 1.2            A       2006             5
# 1.3            A       2007             5
# 1.4            A       2008             5
# 2              B       2014             3
# 2.1            B       2015             3
# 2.2            B       2016             3
# 3              C       2001             2
# 3.1            C       2002             2
于 2014-04-17T16:24:07.100 に答える