2016-03-29 9 views
1

Ich habe einen Datenrahmen meines Benutzer anmeldet (mein Eingang):Wie kann ich die letzte Aktion für jeden Benutzer erkennen?

user_id log_category client_ts 

1 Rob  user   1455035670 
2 Fred  progression  1455035345 
3 Rob  design   1455035547 
4 Rob  design   1455035870 
5 Fred  user   1455035970 
6 Fred  progression  1455035548 

Alles, was ich will, ist: das letzte Protokoll client_ts für all user_id (Ausgang) wissen:

user_id client_ts 

1 Rob  1455035870 
2 Fred  1455035970 

Und dann füge meine Eingangsspaltennamen is_leave mit Faktor yes, wenn der letzte last_log_ts < 1455035950 (Ausgang):

user_id log_category client_ts last_log_ts is_leave 

1 Rob  user   1455035670 1455035870 yes 
2 Fred  progression  1455035345 1455035970 no 
3 Rob  design   1455035547 1455035870 yes 
4 Rob  design   1455035870 1455035870 yes 
5 Fred  user   1455035970 1455035970 no 
6 Fred  progression  1455035548 1455035970 no 

Antwort

2

mit data.table könnten wir so etwas tun:

library(data.table) 
setDT(df)[,last_log_ts := max(client_ts), user_id][,is_leave := ifelse(last_log_ts < 1455035950,"yes","no")] 
> df 
# user_id log_category client_ts last_log_ts is_leave 
#1:  Rob   user 1455035670 1455035870  yes 
#2: Fred progression 1455035345 1455035970  no 
#3:  Rob  design 1455035547 1455035870  yes 
#4:  Rob  design 1455035870 1455035870  yes 
#5: Fred   user 1455035970 1455035970  no 
#6: Fred progression 1455035548 1455035970  no 
+0

funktioniert perfekt THX – Smasell

Verwandte Themen