2016-08-01 6 views
0

승객 ID, 날짜 및 출발지 위치가 포함 된 이와 같은 데이터 프레임이 있습니다.일일 첫 보딩 기록을 추출하는 방법 R

ID DATE  Origin 
1 01/01/2012 A 
1 01/01/2012 B 
1 01/01/2012 C 
1 01/02/2012 A 
1 01/02/2012 B 
1 01/02/2012 C 
1 01/03/2012 A 
1 01/03/2012 B 
1 01/08/2012 A 
2 01/01/2012 D 
2 01/01/2012 C 
2 01/01/2012 B 
2 01/04/2012 D 
2 01/04/2012 C 
2 01/06/2012 D 
3 01/03/2012 F 
3 01/03/2012 G 
3 01/09/2012 F 
3 01/09/2012 G 

는 I는 각 그룹에서 원점에 대한 제 1 값을 가지고, ID와 날짜에 의해

ID DATE  Origin 
    1 01/01/2012 A 
    1 01/02/2012 A 
    1 01/03/2012 A 
    1 01/08/2012 A 
    2 01/01/2012 D 
    2 01/04/2012 D 
    2 01/06/2012 D 
    3 01/03/2012 F 
    3 01/09/2012 F 

상방 도시 datafram을 이용하여 일상 제 탑승 기록 '과 creat 싶다.

현재, 지금이 코드 그러나

Daily_First_record = aggregate(ORIGIN ~ ID + DATE, data=df, FUN='[', i=1) 

을 사용하고 내 원본 데이터 셋은 (1GB의 CSV에 대해) 매우 크기 때문에,이 코드가 느리게 실행됩니다. 같은 직업을 수행하는 쉬운 방법이 있습니까?

답변

0

우리가 사용할 수있는 dplyr

library(dplyr) 
df1 %>% 
    group_by(ID, DATE) %>% 
    summarise(Origin = first(Origin)) 
0

data.table은 매우 빨리해야합니다

> dat[, .SD[1], by = c("ID", "DATE")] 
    ID  DATE Origin 
1: 1 01/01/2012  A 
2: 1 01/02/2012  A 
3: 1 01/03/2012  A 
4: 1 01/08/2012  A 
5: 2 01/01/2012  D 
6: 2 01/04/2012  D 
7: 2 01/06/2012  D 
8: 3 01/03/2012  F 
9: 3 01/09/2012  F 

어디

dat <- fread("ID DATE  Origin 
      1 01/01/2012 A 
      1 01/01/2012 B 
      1 01/01/2012 C 
      1 01/02/2012 A 
      1 01/02/2012 B 
      1 01/02/2012 C 
      1 01/03/2012 A 
      1 01/03/2012 B 
      1 01/08/2012 A 
      2 01/01/2012 D 
      2 01/01/2012 C 
      2 01/01/2012 B 
      2 01/04/2012 D 
      2 01/04/2012 C 
      2 01/06/2012 D 
      3 01/03/2012 F 
      3 01/03/2012 G 
      3 01/09/2012 F 
      3 01/09/2012 G") 
관련 문제