我有兩個dataframes,採取從一個數據幀和過濾數據日期在另一個數據幀
user=c(rep('A',7),rep('B',8))
data = seq(1:15)
date = as.Date(c('2016-01-01','2016-01-02','2016-01-03','2016-01-04','2016-01-05','2016-01-06','2016-01-07','2016-01-08','2016-01-09','2016-01-10','2016-01-11','2016-01-12','2016-01-13','2016-01-14','2016-01-15'))
df = data.frame(user,date,data)
df
user date data
1 A 2016-01-01 1
2 A 2016-01-02 2
3 A 2016-01-03 3
4 A 2016-01-04 4
5 A 2016-01-05 5
6 A 2016-01-06 6
7 A 2016-01-07 7
8 B 2016-01-08 8
9 B 2016-01-09 9
10 B 2016-01-10 10
11 B 2016-01-11 11
12 B 2016-01-12 12
13 B 2016-01-13 13
14 B 2016-01-14 14
15 B 2016-01-15 15
和
df1 =data.frame(user = c('A','B'), start_date = as.Date(c('2016-01-02','2016-01-10')), end_date = as.Date(c('2016-01-06','2016-01-14')))
> df1
user start_date end_date
1 A 2016-01-02 2016-01-06
2 B 2016-01-10 2016-01-14
我想借此從DF1開始日期和結束日期,並過濾記錄在df數據幀的日期列中。特定用戶的數據應該只在df1的start_date和end_date之間。將得到的數據幀應具有以下輸出,
user date data
A 2016-01-02 2
A 2016-01-03 3
A 2016-01-04 4
A 2016-01-05 5
A 2016-01-06 6
B 2016-01-10 10
B 2016-01-11 11
B 2016-01-12 12
B 2016-01-13 13
B 2016-01-14 14
我曾嘗試以下,
循環通過每個用戶,將它傳遞給一個數據幀。然後使用df1中相應條目的start_date和end_date再次對其進行過濾,然後將其附加到新的數據框中。由於數據非常龐大,這對我來說需要很長時間。有沒有更有效的方法來做到這一點?
感謝
噢噢噢......謝謝很多..這一個很容易。應該有這個。 !無論如何謝謝:) – haimen
有時它發生了:) – adaien
你也可以直接進入過濾器'df < - left_join(df,df1,by =「user」)%>%filter(date> = start_date&date <= end_date )' – SymbolixAU