2015-01-30 2 views
0

dplyr을 사용하여 전체 데이터 프레임에서 1/5 이전에 로그인 한 사용자를 필터링하려고 시도합니다.사용자가 이전에 Dplyr로 로그인 한 경우 모든 사용자 데이터를 필터링합니다.

User Date 
A  1/1 
A  1/2 
A  1/5 
A  1/7 
B  1/2 
C  1/6 
D  1/4 
D  1/7 

예상 결과 :

A와 D가 1/5 이전에 기록 되었기 때문에
User Date 
C  1/6 

는 I 그들이 전체 데이터 프레임으로부터 제거 할.

1/5 이전에 로그인 한 사용자를 식별 할 수 있습니다. 그러나 필터 (User! = "")를 사용하여 각 사용자를 수동으로 필터링하지 않고 DF에서 제거하는 방법을 모르겠습니다. 이것은 많은 사용자 목록이있을 때 문제가됩니다.

데이터가 각 그룹 ("사용자")에서 "날짜"으로 정렬된다고 가정하면

답변

2

감사에 의해 Date 클래스에 "날짜"변환 "사용자"(group_by(.))로 그룹화 변수를 지정 새 열 "Date1"을 만들고 "Date1"의 첫 번째 값이 "1/5"보다 큰지 확인한 다음 filter을 사용하여 행을 부분 집합으로 만듭니다.

library(dplyr) 
df %>% 
    group_by(User) %>% 
    mutate(Date1=as.Date(paste0(Date,'/2015'), format='%m/%d/%Y')) %>% 
    filter(Date1[1] >=as.Date('2015-01-05')) %>% 
    select(-Date1) 
# User Date 
#1 C 1/6 
+0

고맙습니다! – ant

관련 문제