2017-05-24 11 views
1

data.tableでデータを複製したいと思います。data.tableのデータを複製する

Time 
2015-01-15 
2016-12-03 
2017-01-10 
2017-03-01 
2017-03-31 

そして私はx = as.Date("2017-03-31")を作成します。ここで
dataの私の一部です。
私のデータは と計算して複製したいと思います。
たとえば、2015-01-15xの間に27ヶ月の違いがあります。 2016-12-03xの4ヶ月の違い。
そして、最大の差はです。私が欲しい
結果は次のとおりです。

Time   
2015-01-15 
2015-01-15 
2015-01-15 
2015-01-15 
2015-01-15 
2015-01-15 
2015-01-15 
2015-01-15 
2015-01-15 
2015-01-15 
2015-01-15 
2015-01-15 
2015-01-15  
2016-12-03 
2016-12-03 
2016-12-03 
2016-12-03 
2017-01-10 
2017-01-10 
2017-01-10 
2017-03-01 
2017-03-31 

任意の提案?

UPDATE

data <- " Time 
1:  2015-01-15 
2:  2016-12-03 
3:  2017-01-10 
4:  2017-03-01 
5:  2017-03-31" 
data <- read.table(text=data, header = TRUE) 
data <- as.data.table(data) 
x <- as.Date("2017-03-31") 
data$Time <- as.Date(data$Time) 

おかげピーターTW。私は彼のコードを使って、私が実際に望むものを手に入れます!多分このような

data 
      Time replicate 
1: 2015-01-15  13 
2: 2015-01-15  13 
3: 2015-01-15  13 
4: 2015-01-15  13 
5: 2015-01-15  13 
6: 2015-01-15  13 
7: 2015-01-15  13 
8: 2015-01-15  13 
9: 2015-01-15  13 
10: 2015-01-15  13 
11: 2015-01-15  13 
12: 2015-01-15  13 
13: 2015-01-15  13 
14: 2016-12-03   4 
15: 2016-12-03   4 
16: 2016-12-03   4 
17: 2016-12-03   4 
18: 2017-01-10   3 
19: 2017-01-10   3 
20: 2017-01-10   3 
21: 2017-03-01   1 
22: 2017-03-31   1 
      Time replicate 
+0

は、これは明らかではない - あなたの意図した結果は何ですか? – thelatemail

+0

私の質問を編集する –

+0

私は以下の回答を投稿しますが、それが本当か偽であるかはわかりません –

答えて

1

DT[, replicate := pmin(month(x) - month(Time) + 1 + 12 * (year(x) - year(Time)), 13)][rep(1:.N, replicate)][] 

そしてあなただけreplicateなしTimeを保ち、あなたのデータをsubsetすることができます。

更新
デビッドArenburgコメントのおかげで、私はここに追加します。新しい列と、その後subsetを作成せずに

DT[rep(1:.N, pmin(month(x) - month(Time) + 1 + 12*(year(x) - year(Time)), 13))] 
+2

あなたは 'DT [rep(1:.N、pmin(month(x) - month(Time)+ 1 + 12 *(year(x) - year(Time))、13))]'新しい列を作成する) –

関連する問題