R: Zusammenfassung mehrerer Spalten (numerisch, Zeichen) und Entfernen von NAs

8

Ich habe einen data.frame mit vielen Spalten (~ 50). Einige von ihnen sind Zeichen, einige sind numerisch und 3 davon verwende ich zum Gruppieren.

Ich muss:

  • Entferne NAs aus numerischen Spalten
  • Berechnen Sie den Mittelwert jeder der numerischen Spalten
  • Extrahiere das erste Element der Zeichenspalten

Nehmen wir an, wir verwenden modifizierte Irisdaten wie folgt:

%Vor%

Ich habe ~ 50 Spalten, numerisch und Zeichen gemischt. Ich habe versucht, etwas wie:

%Vor%

Was ich bekomme, bedeutet Mittel für alle Spalten in einer Gruppe, gefolgt von Spalten mit den ersten Werten in der jeweiligen Gruppe. Und NAs werden nicht behandelt ... Was ist nicht genau das, was ich suche ...

Helfen Sie jemandem?

    
rpl 18.01.2016, 14:27
quelle

2 Antworten

9

Sie könnten dies mit einem if / else im funs von summarise_each versuchen:

%Vor%

Da Sie einige NAs auch in Gruppierungsspalten haben, können Sie eine filter -Anweisung hinzufügen:

%Vor%

Um mögliche NAs in der Farbspalte (oder in nicht-numerischen Spalten) zu vermeiden, könnten Sie sie in first(na.omit(.)) ändern.

Sie könnten auch data.table :

ausprobieren %Vor%     
docendo discimus 18.01.2016, 14:43
quelle
0

Ich versuche es:

1. Für den ersten Punkt, den Sie erwähnen, würde ich etwas wie folgt tun (was für den zweiten Punkt nicht notwendig ist):

%Vor%

Um die Spalten bei numeric oder character zu trennen, verwende ich Folgendes:

%Vor%

2. Die zweite Aufgabe kombiniere ich die obige Zeile mit colMeans :

%Vor%

3. Um das erste Element der Zeichenspalten zu extrahieren, können Sie einfach Folgendes tun:

%Vor%

In dem erwähnten Fall für die Irisdaten ist die erste Zeile komplett NA, sogar die Zeichenspalten, also würde ich iterieren, um die erste Nicht-NA-Zeile zu finden

%Vor%

Sei vorsichtig mit dem Klassenfaktor (der den Code im Fall der Iris-Daten aufteilt, wo Spalte Species vom Klassenfaktor ist und du erwartest, dass es sich um eine Zeichenspalte handelt. Du kannst dies mit sapply(iris, class) überprüfen und ändern es mit zB

%Vor%

Wenn Sie die Daten einlesen, können Sie den Parameter stringsAsFactors = FALSE der Funktionen read.table , read.csv oder ähnliches angeben.

    
Phann 18.01.2016 14:54
quelle

Tags und Links