Ich habe die unten, help.a
und ich muss dies mit mehreren Filter-Operationen zu reinigen.Mehrere Filter Operationen über dplyr basierend auf Anzahl und Art der Beobachtungen in separaten Spalten
help.a <- data.frame(id = as.factor(c("01", "01", "01", "01", "01", "04", "04", "05", "05", "05", "05", "05", "09", "09", "09", "09", "09")),
episode = c(3, 3, 3, 4, 4, 3, 3, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1),
count = c(1, 2, 3, 4, 5, 1, 2, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5),
var_a = c(73, 73, 73, 73, 73, 43, 43, 80, 80, 80, 80, 80, 73, 73, 73, 73, 42))
id episode count var_a
01 3 1 73
01 3 2 73
01 3 3 73
01 4 4 73
01 4 5 73
04 3 1 43
04 3 2 43
05 2 1 80
05 2 2 80
05 2 3 80
05 2 4 80
05 3 5 80
09 1 1 73
09 1 2 73
09 1 3 73
09 1 4 73
09 1 5 42
Erstens: ich mit einer Zählung alle IDs zu entfernen versuche, weniger als 3 (zB id 4)
Zweitens: Ich möchte entfernen Beobachtungen mit mehreren Episoden während halten die erste beobachtete Episode (die niedrigste beobachtete Episodennummer)
Drittens: Ich möchte nur ID-Beobachtungen mit der gleichenbehaltenVariable ... Wenn es mehr var_a
Beobachtungen mag ich nur das erste beobachtet Variable halten (zB ID 9 und Var_a 73)
Am Ende hoffe ich meine Daten-Set unten werden wie folgt aussehen:
id episode count var_a
01 3 1 73
01 3 2 73
01 3 3 73
05 2 1 80
05 2 2 80
05 2 3 80
05 2 4 80
09 1 1 73
09 1 2 73
09 1 3 73
09 1 4 73
Meine Versuche bisher erreicht hat, Teil 1 mit dem folgenden Code:
help.a %>% group_by(id) %>% filter(!n() <3)
Doch ich steckte mit wie dplyr zu sagen, beobachtet zu halten ersten episode
und beobachtete ersten var.a
... Irgendwelche Vorschläge einen sehr geschätzt.
Brilliant verwenden! Ok, nur damit ich das bekomme ... (1) Wir können '&' nach dem Filter verwenden, um einen weiteren Filterausdruck hinzuzufügen ... Wir verwenden das anstelle von | oder Befehl, weil wir wollen, dass sie in der richtigen Reihenfolge ablaufen. (2) Der Aufruf von "episode == unique (episode) [1]" ruft nach der ersten eindeutigen Episode, und der Index von [1] sagt das. Und (3) Das gleiche für var_a unter erneuter Verwendung des Index von [1]. Klingt das richtig? – bpace
@bpace Ich habe die 'unique (episode) [1]' in 'first (episode)' geändert, um die Dinge schneller zu machen. Wir verwenden das '&', so dass nur Zeilen gefiltert werden, die alle diese Bedingungen erfüllen. – akrun
Ah, es sieht so aus, als hätten Sie es in zuerst geändert() ... Das macht Sinn. Und das muss genauso sein wie die Indizierung mit [1], richtig? – bpace