2017-09-14 4 views
1

とRでテーブルの複製:私はRで、このテーブルを持っている1列の変化

Name  ID Year Month Date 
John  8  2017 7  16  
Carol 90 2017 7  30 
Bug  9  2017 7  1 

私はこの同じテーブルを4回複製したい、すべての値が同じでなければなりません。月の列を除いて、毎回1​​ずつ増分する必要があります。最終的な表は次のようになります:

Name  ID Year Month Date 
John  8  2017 7  16 
Carol 90 2017 7  30 
Bug  9  2017 7  1 
John  8  2017 8  16 
Carol 90 2017 8  30 
Bug  9  2017 8  1 
John  8  2017 9  16 
Carol 90 2017 9  30 
Bug  9  2017 9  1 
John  8  2017 10  16 
Carol 90 2017 10 30 
Bug  9  2017 10 1 
John  8  2017 11 16 
Carol 90 2017 11 30 
Bug  9  2017 11 1 

Rで効率的に行う方法を教えてください。多くの感謝!

+0

"Rで効率的に行う方法を指摘してください....." – PoGibas

答えて

2

これはあなたのデータフレームの場合:

df2 = df[rep(rownames(df), 4),] 

そして、これは再びそれですが、インクリメントヶ月と::

df = read.table(text = "Name ID Year Month Date 
      John 8 2017 7 16 
      Carol 90 2017 7 30 
      Bug 9 2017 7 1", header = TRUE) 

次に、この繰り返しあなたのデータフレームである

df2$Month = df2$Month + rep(0:3, 3) 

より一般的な場合:

m = 4 # <-- number of rows desired 
df2 = df[rep(rownames(df), m), ] 
df2$Month = df2$Month + rep(0:m, nrow(df)) 
+2

最後の行に 'df2 $ Month + rep(0:3、each = nrow(df)) 'とする。 – lmo

+0

iがdata.table(または文字ベクトル)の場合、結合する列を ' (?data.tableを参照)、またはxをキー入力する(つまり、ソートされ、ソートされているとマークされていますか?setkeyを参照)。 xがRAM内でソートされるため、キー付きジョインは非常に大きなデータに対してさらに高速化のメリットをもたらす可能性があります。 – Pree

+0

これは次のように働いた:df2 < - df [rep(1:nrow(df)、m)、]。それは私の間違いだった、lebelinozを指摘してくれてありがとう! – Pree

関連する問題