2016-07-13 2 views
-3

Ich möchte meinen Datenrahmen so ändern. Wie kann ich es in R machen? Brauche ich doppelte For Loops, um dies zu erreichen? (Egal wie viele Reisen sie einen Tag taten extrahiert nur die erste Geschichte)Wie ändere ich Daten in R (erste Zeile für alle ID nach Datum extrahieren)

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 


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 

(Ich möchte nur wie diese den Datensatz bleiben ↑) (täglich erste Reise Rekord für jeden Passagier)

+5

Für die Zukunft bitte nicht poste Tabellen als Bilder, wie wir nicht, dass für die einfache Prüfung kopieren und einfügen. – Axeman

+1

Ich würde empfehlen, weiter zu erklären, was Sie brauchen. Ist es "Sortieren nach Herkunft" (und die zweite Tabelle ist nicht vollständig)? – YakovL

Antwort

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

dies die richtige Antwort ist

0

Keine Schleifen benötigt. Dies ist der einfachste Weg es zu tun

df <- df[which(df$origin=="A"|df$origin=="D"|df$origin=="F"),] 

Sie können es auch mit dplyr tun.

+1

Ich denke, er will nur die erste Reihe für jedes Datum. Siehe Titel. – Axeman

+1

Ja. Hab das nicht bemerkt. Niemals Daten in Bildern vor lol angeschaut. Immer zwischen den Tabs wechseln müssen –

+0

Ja, kann dich nicht beschuldigen! – Axeman

0

Ich denke, du willst das?

library(dplyr) 
data %>% 
    group_by(ID, DATE) %>% 
    slice(1) 
+0

Vielen Dank für Ihre Antwort, aber ich denke, dass das Ergebnis, das durch diesen Code erreicht wird, nicht wirklich das ist, was ich möchte. Ich möchte die erste Reihe für jedes Datum, aber auch für jeden Passagier (ID) bekommen. zB ID 1 -> Datum 01.01.2012 ID 1 -> 01.02.2012 ... -> und ID 2 -> 01.01.2012 ID 2 -> 02/01/2012 -> ... (So, wie ich nur den täglichen ersten Rekord für jeden Passagier benötige) –

+0

Sorry, deine Frage war wirklich nicht klar. Ich habe einen Schnitt gemacht. – Axeman

+0

danke, ich habe gerade meine Frage aktualisiert –

Verwandte Themen