2015-07-13 9 views
5

Ich habe eine Matrix, die ich für das Plotten in ggplo2 mit der melt-Funktion von reshape2 reformieren möchte, kann aber keine Möglichkeit finden, benutzerdefinierte Header-Namen hinzuzufügen. DieseSo benennen Sie jede Variable mit Schmelze

#Create toy data 
MyData <- matrix(rnorm(15,500), nrow = 5, ncol = 3, dimnames = list(
    c("Unknown","0-4","4-9","10-14","15-19"),c("Area1","Area2","Area3"))) 

Dat2 <- melt(MyData, value.name = "Count") 

#Reform data using melt, define Count as value name 
MyData2 <- melt(MyData, value.name = "Count") 

bekommt mir, was ich will, aber dann Operationen, die auf die Var1 und Var2 refere haben zu folgen.

habe ich versucht, sie explizit variable.name mit der Benennung:

MyData2 <- melt(MyData, value.name = "Count", 
    variable.name = c("AgeGroup", "Geo")) 

ich sie natürlich nennen kann nach der Tat colnames() verwenden, aber es wäre melt mit tun. Ist das möglich? Muss ich sichern?

Danke!

Antwort

6

Verwenden varnames Argument:

melt(MyData, value.name = "Count", varnames=c('AgeGroup', 'Geo')) 
    AgeGroup Geo Count 
1 Unknown Area1 501.6685 
2  0-4 Area1 499.2812 
3  4-9 Area1 500.3892 
4  10-14 Area1 498.6380 
5  15-19 Area1 500.5904 
6 Unknown Area2 499.4590 
7  0-4 Area2 500.5464 
8  4-9 Area2 500.5635 
9  10-14 Area2 500.7211 
10 15-19 Area2 500.8381 
11 Unknown Area3 498.8154 
12  0-4 Area3 499.1818 
13  4-9 Area3 499.6678 
14 10-14 Area3 499.3586 
15 15-19 Area3 500.3962 

Ihre MyData ist eine Matrix (so verwendet, die melt.arrayvarnames verwendet) keine Datenrahmen (melt.data.frame verwendet variable.name). ?melt.array.

+0

Die obige Lösung funktionierte zum Umbenennen der Variablen, aber ich finde, dass der value.name nicht funktioniert, um den Wert zu benennen. Ich habe das Gefühl, dass das früher funktioniert hat, und ich habe einen früheren Code betrachtet, den ich für die Erstellung von Diagnosediagrammen verwende. Die Dokumentation enthält nur Variablennamen als Teil der Funktion. Ist die Benennung der Wertespalte nicht möglich? –

+0

Der obige Code funktioniert für mich (d. H. 'Value.name =" Count "' benennt die 'value' Spalte "Count"). –

+0

Kann es nicht erklären, ich habe den gleichen Code verwendet und unterschiedliche Ergebnisse erhalten. Es funktioniert jetzt. Vielleicht half mir der Neustart meines Computers. Entschuldigung für die unnötige Frage. (Schild) –

Verwandte Themen