2017-11-26 4 views
2

Ich habe folgende Datenstruktur nach der Ausführung einer Funktion: Die Daten haben in einem einfachen Datenrahmen, mit Buchstaben als Zeilen und Werte in einer SpalteWie ändere ich einen benannten Vektor in einen Datenrahmen unter Beibehaltung der Namen?

 A  B  C  D  E  
     92.08 90.68 54.09 92.87 97.40  

     F  G  H  I  J  ...  
     24.52 67.24 15.63 22.33 45.10 ... 

Als Endergebnis, ich will. Im Anschluss arbeitet, obwohl ich bin neugierig, ob dies der eleganteste Weg ist (?):

output <- data.frame(output) 
output <- data.frame(rownames(output), rowSums(output)) 
colnames(output) <- c("Category", "Value") 
output 
output %>% arrange(desc(output)) 

Wenn Sie eine Idee haben, es besser zu machen, mich zu korrigieren frei fühlen. dplyr Lösungen geschätzt.

Danke!

+1

Teilen Sie den 'dput'. Uns etwas zu sagen, "das nicht wirklich geholfen hat" ist nicht informativ. Wie wäre es, wenn du die "str" ​​- und "class" -Ausgabe zeigst? – Axeman

+0

'> Klasse (Ausgabe) [1]" numerisch "' – Christopher

+0

Ja, so ist es ein benanntes Vektor, zum Beispiel 'setNames (1:26, Buchstaben)'. Sie können 'data.frame (Kategorie = Namen (Ausgabe), Wert = Ausgabe)' verwenden. – Axeman

Antwort

5

Wie von @Axeman in den Kommentaren gesagt, haben Sie einen benannten Vektor. Der einfachste Weg, die in einen Datenrahmen zu verwandeln, indem die stack -function von der Basis R. mit

Einige Beispieldaten:

output <- setNames(c(92.08,90.68,54.09,92.87,97.40), LETTERS[1:5]) 

, die wie folgt aussieht:

> output 
    A  B  C  D  E 
92.08 90.68 54.09 92.87 97.40 

Transformieren in einen Datenrahmen mit:

df <- stack(output) 

die gibt:

> df 
    values ind 
1 92.08 A 
2 90.68 B 
3 54.09 C 
4 92.87 D 
5 97.40 E 

die Spaltennamen und Spaltenreihenfolge in der Frage, wie angegeben zu erhalten:

df <- setNames(stack(output)[2:1], c('Category','Value')) 

die gibt:

Category Value 
1  A 92.08 
2  B 90.68 
3  C 54.09 
4  D 92.87 
5  E 97.40 
+0

Perfekte Lösung, danke! – Christopher

Verwandte Themen