2013-02-07 3 views
2

몇 시간 동안 검색 한 후 다음과 같은 문제에 대한 해결책을 찾을 수 없습니다. 예를 들어R 하나의 데이터 프레임에서 날짜를 다른 데이터 프레임의 날짜로 쿼리

:

head(x) 
station temp obsdate 
311820 65.0 1973-01-01 
311821 62.0 1973-01-02 
etc... 

head(seasonDates) 
season startDate endDate 
A  1973-11-01 1974-06-30 
B  1974-11-01 1975-06-30 
C  1975-11-01 1976-06-30 
etc... 

내가 '시즌을 할당하고 싶습니다 나는 하나의 관찰 기간의 열을 포함, 2 개 데이터 프레임을 가지고, 다른 하나는 시작 날짜와 날짜와 종료 날짜를 포함 'obsdate'관측 날짜가 'startDate'에서 'endDate'로 표시된 날짜 범위 내에 있으면 'seasonDates'데이터 프레임에서 'x'데이터 프레임으로 이동합니다. 어떤 도움이라도 대단히 감사합니다. 세 개의 날짜 열을 가정

+2

[당신은 시도 무엇?] (http://whathaveyoutried.com) –

+0

나는이 문제를 해결하기 위해 조건을 사용할 수 있습니다 기대했다 : 'ifelse (x $ obsdate = seasonDates $ startDate, x $ season = seasonDates $ season, 0)' – austin

답변

3

클래스 "날짜"에 있습니다

library(sqldf) 
sqldf("select * from x left join seasonDates on 
     (obsdate between startDate and endDate)") 
+0

'x를 선택하세요. *, seasonDates .season .... ' – agstudy

+0

고맙습니다. 해결책. 어떤 이유로이 스크립트를 실행했을 때 중복 된 행 중 하나가 잘못 일치하여 중복 된 결과가 발생했습니다. 그러나 시작 날짜를 숫자로 캐스팅하면 완벽하게 작동합니다. 나는 모든 날짜가 클래스 "날짜"였고 명백한 실수를 찾았는지 확인했다. 분명히, 내 SQL 재능은 별보다 작기 때문에 왼쪽 결합을 사용하려고하는 것과 관련이 있다고 생각됩니다. 큰 감사를 드린다! – austin

+0

@austin, 재현 가능한 형태로 게시하거나 나에게 보내면 나는 그것을 볼 수있다. –

관련 문제