Collapsing Zeilen wo einige sind alle NA, andere sind disjoint mit einigen NAs

7

Ich habe einen einfachen Datenrahmen als solcher:

%Vor%

Und ich würde es gerne neu formatieren:

%Vor%

(Bitte beachten Sie: der reale Datensatz hat Tausende von Zeilen und die Werte stammen aus biologischen Daten - die NA s folgen keinem einfachen Muster, außer dass die NA s disjunkt sind, und ja, es gibt genau 3 Zeilen für jedes ID ).

SCHRITT EINS : Löschen Sie Zeilen, die nur NA -Werte enthalten.

Auf der Oberfläche sah das einfach aus, aber ich habe einige Probleme überstanden.

complete.cases(DF) gibt alle FALSE zurück, also kann ich nicht wirklich die Zeilen mit allen NA s entfernen, wie in DF[complete.cases(DF),] . Dies liegt daran, dass alle Zeilen mindestens ein NA enthalten.

Da NA s sich selbst verbreiten möchten, schlagen andere Schemas, die is.na verwenden, aus dem gleichen Grund fehl.

SCHRITT ZWEI : Die verbleibenden zwei Zeilen werden zu einem zusammengefügt.

Ich denke daran, etwas wie aggregate zu benutzen, um das durchzuziehen, aber es muss einen einfacheren Weg geben als dies , was überhaupt nicht funktioniert.

Danke für irgendeinen Rat.

    
Matt O'Brien 20.01.2015, 01:22
quelle

4 Antworten

7

Versuchen Sie

%Vor%     
Khashaa 20.01.2015, 01:33
quelle
11

Hier ist ein Datentabellenansatz, der na.omit() in den Spalten nach ID gruppiert verwendet.

%Vor%     
Rich Scriven 20.01.2015 01:59
quelle
5

Hier ein paar zusammengefasste Versuche:

%Vor%

Da die Formeloberfläche von aggregate standardmäßig na.omit für die gesamten Daten vor jeder Gruppierung verwendet, löscht sie jede Zeile von dat , da sie alle mindestens einen NA -Wert enthalten. Probieren Sie es aus: nrow(na.omit(dat)) gibt 0 zurück. Verwenden Sie in diesem Fall na.pass in aggregate und dann na.omit , um die übergebenen NA s zu überspringen.

Alternativ können Sie die Formelschnittstelle nicht verwenden und die Spalten für die manuelle Aggregation angeben:

%Vor%     
thelatemail 20.01.2015 01:32
quelle
1

Der einfache Weg ist:

%Vor%

Wenn aber nicht alle Spalten die gleiche Anzahl von Nicht- NA -Werten haben, müssen Sie sie wie folgt zuschneiden:

%Vor%     
Jthorpe 20.01.2015 01:32
quelle

Tags und Links