kombiniert Werte in Zeilen basierend auf übereinstimmenden Bedingungen in R

8

Ich habe eine einfache Frage zum Aggregieren von Werten in R.

Angenommen, ich habe einen Datenrahmen:

%Vor%

Das sieht so aus:

%Vor%

Ich habe festgestellt, dass ich Type 1 und Type 1B in den Daten habe, daher möchte ich Type 1B in Type 1 kombinieren.

Also entscheide ich mich für dplyr :

%Vor%

Aber jetzt muss ich weitermachen:

%Vor%

Ich denke, ich möchte cbind diesen neuen DF2 zurück zum ursprünglichen DF machen, aber das bedeutet, dass ich die Spaltennamen als konsistent einstellen muss:

%Vor%

OK, jetzt kann ich rbind:

%Vor%

Das Ergebnis? Es hat funktioniert ....

%Vor%

... aber hmm! Das war schrecklich! Es muss einen besseren Weg geben, Werte einfach zu kombinieren.

    
Monica Heddneck 07.04.2015, 20:18
quelle

4 Antworten

4

Hier ist ein möglicher dplyr-Ansatz:

%Vor%     
docendo discimus 07.04.2015 20:30
quelle
4

Verwenden Sie sub() mit aggregate() und entfernen Sie alles andere als eine Ziffer vom Ende von col1 ,

%Vor%

Der do.call() -Wrapper ist da, damit die erste Spalte nach aggregate() richtig von einer Matrix in einen Vektor geändert wird. Auf diese Weise gibt es später keine Überraschungen auf der Straße.

    
Rich Scriven 07.04.2015 20:31
quelle
2

Sie können versuchen:

%Vor%

Oder noch direkter:

%Vor%     
Colonel Beauvel 07.04.2015 20:24
quelle
1

Meiner Meinung nach ist aggregate() die perfekte Funktion für diesen Zweck, aber Sie sollten keine Textverarbeitung durchführen müssen (z. B. gsub() ). Ich würde dies in einem zweistufigen Prozess tun:

  1. Überschreiben Sie col1 mit der neuen gewünschten Gruppierung.
  2. Berechnen Sie die Aggregation mit dem neuen col1 , um die Gruppierung anzugeben.
%Vor%     
bgoldst 07.04.2015 20:37
quelle

Tags und Links