2017-05-24 2 views
0

Dears,R - Finden Sie den Anfang und Ende des Zeitstempels gemäß mit Werten in einer anderen Spalte

Ich sind newby in R-Programmierung, aus diesem Grunde, ich komme, um Hilfe Sie hier zu fragen. Ich versuche einen Weg zu finden, dieses Problem zu lösen. Ich habe mich angestrengt, aber ohne Erfolg.

Ich habe eine data.frame ähnlich wie ...

df2 <- data.frame(Recordig = c("Rec1", "Rec1", "Rec1", "Rec1", "Rec1", "Rec1", 
           "Rec2","Rec2","Rec2","Rec2","Rec2","Rec2"), 
        MediaName = c("Imagem1","Imagem1","Imagem1", 
           "Estimulo1","Estimulo1","Estimulo1", 
           "Imagem1","Imagem1","Imagem1", 
           "Estimulo1","Estimulo1","Estimulo1"), 
        Timestamp = c(4975 , 5155 , 5312 ,25076, 25463 ,26040 , 5035 , 5248, 5551, 17047 , 17263, 17533)) 

vereinfachte Version unter

Recordig MediaName Timestamp 
1  Rec1 Imagem1  4975 
2  Rec1 Imagem1  5155 
3  Rec1 Imagem1  5312 
4  Rec1 Estimulo1  25076 
5  Rec1 Estimulo1  25463 
6  Rec1 Estimulo1  26040 
7  Rec2 Imagem1  5035 
8  Rec2 Imagem1  5248 
9  Rec2 Imagem1  5551 
10  Rec2 Estimulo1  17047 
11  Rec2 Estimulo1  17263 
12  Rec2 Estimulo1  17533 

Was mein Punkt ist? Ich muss genau wissen, wie viel Zeit der Teilnehmer (z. B. Rec1) verbrachte, um jedes Bild (Bild1) anzusehen. In diesem Fall begann der Zeitstempel für Image1 bei 4.975s und endete bei 5.312s, was 333ms ergab

Der Punkt ist, dass ich Hunderte von Bildern und tausend von Befragten habe, die unterschiedliche Zeit für die Beobachtung der Bilder ausgegeben haben.

Gibt es jemanden mit einer Idee, mir zu helfen, bitte?

+0

Was ist Ihr erwartet Ergebnis? Möchten Sie den Unterschied visualisieren oder gibt es eine bestimmte Hypothese, die Sie testen möchten? –

+0

Hi @AdamQuek Vielen Dank für Ihre Aufmerksamkeit. akrun und ikop bieten bereits die lösung, aber ich schätze wirklich ihre beseitigung –

Antwort

0

Sie können den Unterschied zwischen dem ersten und dem letzten Zeitstempel für jeden Teilnehmer (Recordig) und Bild (MediaName) mit dem dplyr Paket finden:

library(dplyr) 
df3 <- df2 %>% 
     dplyr::group_by(Recordig, MediaName) %>% 
     dplyr::summarise(duration = diff(range(Timestamp))) 

df3 
# Source: local data frame [4 x 3] 
# Groups: Recordig [?] 
# 
# Recordig MediaName duration 
#  <fctr> <fctr> <dbl> 
# 1  Rec1 Estimulo1  964 
# 2  Rec1 Imagem1  337 
# 3  Rec2 Estimulo1  486 
# 4  Rec2 Imagem1  516 
+0

Hi @ikop, vielen dank für sie hilfe !!!! –

0

Wir base R verwenden

aggregate(cbind(duration = Timestamp) ~Recordig + MediaName, df2, 
       FUN = function(x) diff(range(x))) 
# Recordig MediaName duration 
#1  Rec1 Estimulo1  964 
#2  Rec2 Estimulo1  486 
#3  Rec1 Imagem1  337 
#4  Rec2 Imagem1  516 
+1

Hallo @akrun, vielen Dank für Ihre Hilfe. Ich werde näher die Attribute dieser Funktion studieren. Hab eine schöne gute Woche! –

+0

@FabioAlvesCarvalho Vielen Dank für die Kommentare. Haben Sie auch eine schöne Woche für Sie! – akrun

Verwandte Themen