2012-04-02 10 views
0

Ich habe einen Datenrahmen, wie diese WerteR: Aggregat ähnliche Spalten und Spaltennamen als Wert in R verwenden

ID FactorA FactorB Industry1 Industry2 Curr1 Curr2 
1 1.121 0.121 1   0   1  0 
2 1.52 0.114 0   1   1  0 

Faktor A und Faktor B reelle Zahlen sind und alle von ihnen haben aussieht. Jedoch sind Industry1 und industry2 (gleich für Währung 1 und Währung 2) binär, dh nur einer von ihnen kann value=1 haben.

Da möchte ich die Daten für Speicherzwecke schrumpfen, als ich 80 Industrie-Typen und 100 Währungstypen haben und nur einer von ihnen Werte haben, möchte ich sie speichern, wie diese

ID FactorA FactorB Industry Curr 
1 1.121 0.121 Industry1 Curr1 
2 1.52 0.114 Industry2 Curr1 

Grundsätzlich möchte ich verwenden Sie die Spaltennamen, wenn der Wert 1 ist und kommen alle Fäden wo type=Industry, Curr usw. ich habe nicht eine andere Tabelle, die jede Spalte Namen seiner Art verbindet

ColName  Type 
FactorA  Factor 
FactorB  Factor 
Industry1 Industry 
Industry2 Industry 
Curr1  Curr 
Curr2  Curr 
+2

Sie verwenden sollten 'dput' eine reproduzierbare Antwort einer Probe Ihres data.frame zu bieten (so etwas wie' dput (mydataframe.. [1: 5,]) ' –

+0

Dank hatte ich Probleme, wie die Daten präsentieren – user1042267

+5

Bitte hören Sie auf, unsere Verbesserungen an Ihrer Formatierung zurückzusetzen. – joran

Antwort

0

Sie ifelse verwenden könnten die neuen Spalten zu erstellen:

mydata$Industry = ifelse(mydata$Industry1, "Industry1", "Industry2") 
mydata$Curr = ifelse(mydata$Curr1, "Curr1", "Curr2") 
3

Sie können Spalten kollabieren die melt Funktion aus dem reshape2 Paket. Wie in den Kommentaren erwähnt, ein Beispiel geben - es das Leben leichter macht:

dd = data.frame(ID = 1:2, factorA = c(1.121, 1.52), 
    factorB = c(0.12, 0.114), Ind1 = 1:0, Ind2= 0:1, 
    Curr1 = 1, Curr2=0) 

Laden Sie zunächst das Paket:

library(reshape2) 

Weiter melt die Spalten, sondern schützen die ersten drei:

dd1 = melt(dd, id=1:3) 

Weitere Informationen finden Sie in der Schmelzhilfe-Datei. Dann nur ein bisschen Subsetting, um zu bekommen, was Sie wollen:

Sie werden wahrscheinlich die letzte Spalte fallen lassen wollen.

Verwandte Themen