0
다음과 같이 관리하는 일정한 중복 기간을 통해 그룹화 된 데이터를 분류하고자합니다.R에서 데이터를 복제하지 않고 데이터 세트를 분할하는 방법은 무엇입니까?
library(dplyr)
## Create data frames
df_A = data.frame("ID" = rep("A" , 5) , "Date" = c("2000-01-03" , "2000-02-03" , "2000-04-01" , "2000-05-03" ,"2000-05-04") , "Var_1"=c(1,2,3,4,5))
df_B = data.frame("ID" = rep("B" , 5) , "Date" = c("2000-01-03" , "2000-01-04" , "2000-01-05" , "2000-03-02" ,"2000-04-01") , "Var_1"=c(6,7,8,9,10))
df_C = data.frame("ID" = rep("C" , 5) , "Date" = c("2000-01-03" , "2000-02-03" , "2000-03-01" , "2000-04-03" ,"2000-05-04") , "Var_1"=c(11,12,13,14,15))
## Bind and group data frames together via ID
mydf = bind_rows(df_A , df_B , df_C) %>% group_by(ID)
## Create date range
filterDates = data.frame("start" = c("2000-01-01" , "2000-02-01","2000-03-01","2000-04-01") , "end" = c("2000-02-29","2000-03-31","2000-04-30","2000-05-31"))
## Segment data according to date range
segmented_df = apply(filterDates , 1 , function(x) filter(mydf , Date>= as.Date (x["start"]) & Date<=x["end"] ))
그러나, 프로세스는 목록 내의 어떤 데이터의 중복을 생성한다.
## For e.g.
segmented_df[[2]][1,] ## This was already in segmented_df[[1]][2,]
데이터 복제가 발생하지 않도록하려면 어떻게해야합니까?
group_by (ID, Date)를 사용하여 생각했지만 날짜 범위를 고려하지 않았습니다.
참고 : 특정 형식의 솔루션을 찾고있는 것은 아니지만 메모리가 효율적이고 각 세그먼트 그룹을 쉽게 호출 할 수 있다면 바람직합니다.
잘못된 용어를 사용하면 사전에 사과드립니다.