Z biegiem czasu przyzwyczaiłem się do niesamowicie przydatnej funkcjonalności połączeń toczenia data.table
w r
. Wykorzystują one operacje LOCF
(ostatnia obserwacja przeniesiona do przodu). Niestety, jestem zmuszony pracować w środowisku, które jest mi mniej znane (używając postgres
). Czy istnieje analogiczna operacja w SQL (szczególnie postgres
)?Łączenia toczenia (LOCF) w PostgreSrze
Oto przykład tego, co mam i wyjście Chciałbym:
Oto moja pierwsza tabela
dt1 = data.table(Date=seq(from=as.Date("2013-01-03"),
to=as.Date("2013-06-27"), by="1 day"),key="Date")[, ind:=.I]
Date ind
1: 2013-01-03 1
2: 2013-01-04 2
3: 2013-01-05 3
4: 2013-01-06 4
5: 2013-01-07 5
---
172: 2013-06-23 172
173: 2013-06-24 173
174: 2013-06-25 174
175: 2013-06-26 175
176: 2013-06-27 176
Oto mój drugi stół
dt2 = data.table(Date=seq(from=as.Date("2013-01-01"),
to=as.Date("2013-06-30"), by="1 week"),key="Date")
Date
1: 2013-01-01
2: 2013-01-08
3: 2013-01-15
4: 2013-01-22
5: 2013-01-29
---
22: 2013-05-28
23: 2013-06-04
24: 2013-06-11
25: 2013-06-18
26: 2013-06-25
Oto kod użyłbym w data.table
dla pożądanego wyjścia.
dt1[dt2, roll=Inf]
Date ind
1: 2013-01-01 NA
2: 2013-01-08 6
3: 2013-01-15 13
4: 2013-01-22 20
5: 2013-01-29 27
---
22: 2013-05-28 146
23: 2013-06-04 153
24: 2013-06-11 160
25: 2013-06-18 167
26: 2013-06-25 174
Czy to w ogóle możliwe przy użyciu postgres
(lub bardziej ogólnie rzecz biorąc, SQL
? Dziękuję bardzo za wszelką pomoc można dostarczyć.
Co zrobić wartości w kolumnie „ind " oznaczać? –
Jest to po prostu wartość, aby potwierdzić, że połączenie jest wykonywane poprawnie. W tym przypadku zasadniczo oznacza numer wiersza. –
Jeśli tylko potwierdza, że sprzężenie jest wykonywane poprawnie, nie możesz po prostu użyć drugiej tabeli samodzielnie?Wartości w kolumnie "Data" są identyczne. –