2017-05-24 9 views
1

data.table으로 데이터를 복제하고 싶습니다.
여기 data 내 일부입니다data.table의 데이터를 복제하십시오.

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

그리고 x = as.Date("2017-03-31")을 만들 수 있습니다.
복제하려면 내 데이터는 으로 계산하여 내 데이터를 복제하십시오.
예를 들어 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) - 달 (시간) + 1 + 12 * (년 (x) - 년 (시간)), 13) 새 열 만들기) –