2017-04-15 2 views
0

두 개의 서로 다른 데이터 세트가 있는데 두 번째 세트의 변수 조합에 기초하여 첫 번째 세트의 하위 세트를 가져오고 싶습니다. 특히, 날짜 범위와 직선 변수 매칭의 조합을 살펴보고자합니다. 여기 만든 다음 데이터 프레임을 보면날짜 범위와 변수 매칭 모두를 기반으로 한 데이터 서브 세트

:

options(stringsAsFactors = FALSE) 


Loc<-rep("A",10) 
InEvent<-rep("IN",10) 
InDate<-c("2016-05-10","2016-05-20","2016-05-25","2016-06-10","2016-06-20","2016-07-05","2016-07-17","2016-07-27","2016-08-10","2016-08-20") 
InSN<-c("H1","H1","H1","H1","H1","H2","H2","H2","H2","H2") 
OutEvent<-rep("OUT",10) 
OutDate<-c("2016-05-15","2016-05-23","2016-06-02","2016-06-14","2016-06-26","2016-07-09","2016-07-26","2016-08-09","2016-08-19","2016-08-26") 
OutSN<-c("H1","H1","H1","H1","H1","H2","H2","H2","H2","H2") 

Cali<-data.frame(Loc,InEvent,InDate,InSN,OutEvent,OutDate,OutSN) 

Cali$InDate<-as.POSIXct(strptime(Cali$InDate,format="%Y-%m-%d", tz="UTC")) 

Cali$OutDate<-as.POSIXct(strptime(Cali$OutDate,format="%Y-%m-%d", tz="UTC")) 
Cali 



Sen<-rep("CL",20) 
Date<-c("2016-04-10","2016-05-11","2016-05-12","2016-05-13","2016-05-17","2016-05-26","2016-06-17","2016-06-27","2016-07-08","2016-07-20","2016-07-27","2016-08-01","2016-08-05","2016-08-07","2016-08-12","2016-08-15","2016-08-19","2016-08-20","2016-08-23","2016-09-20") 
SN<-c("H1","H1","H2","H5","H1","H1","H7","H2","H2","H2","H1","H2","H1","H5","H2","H5","H3","H1","5","H2") 


Data<-data.frame(Sen,Date,SN) 


Data$Date<-as.POSIXct(strptime(Data$Date,format="%Y-%m-%d", tz="UTC")) 
Data 

를 최종 결과에서, 나는 단지 "칼리"의 날짜 범위 내에서 누워 "데이터"데이터 프레임에서 행을 원하지만, 또한 일치 "InSN"과 "OutSN"의 H 값.

예를 들어, Cali의 첫 번째 행은 2016-5-10 : 2016-5-15의 범위와 SN 값이 H1입니다. 그래서 나는이 날짜 범위 내에 있고 "SN"열에 "H1"이있는 "데이터"행만 원할 것입니다.

얻어진 데이터 열은 일치 기준에 맞는 경우에만 포함 된 행 (행 2,6,9,10,12,15)

답변

1
library(dplyr) 
library(magrittr) 
Data=left_join(Cali, Data, by = c("InSN"="SN")) %>% 
    filter(Date>=InDate, Date<=OutDate) 
"데이터"의 서브 세트이어야