2017-10-13 4 views
0

Ich möchte einen multiplen Datenrahmen verbinden, sodass ich einen Mehrfach-Boxplot in einem Diagramm als Plot multiple boxplot in one graph erstellen kann. Allerdings haben meine Daten ein anderes Format, ich muss in Tabelle umwandeln, dann benutze ich eine "left_join" und dann eine "melt" -Funktion vor dem Plotten. Ich habe einen Fehler "Fehler in alloc.col (ans): Objekt 'Csetmutable' nicht gefunden" und konnte nicht finden, wie es zu beheben. Bitte zeigen Sie mir, ob es eine andere Möglichkeit gibt, ein Diagramm zu erstellen, ohne es in eine Tabelle umzuwandeln. Danke für Ihre Hilfe.Fehler beim Umwandeln von Datenrahmen in Tabelle

library("reshape2") 
library("ggplot2") 
library("dplyr") 
library(data.table) 

df<-data.frame(T = c(25, 25, 85, 85, 125, 125, 125), V =c(1.03, 1.06, 1.56,1.75,1.82, 1.85, 1.90), type=c(2,2,2,2,2,2,2)) 
df1<-data.frame(T = c(25, 85, 85, 85, 85, 125, 125), V =c(1.13, 1.17, 1.66,1.76,1.89, 1.90, 1.95), type=c(5,5,5,5,5,5,5)) 
df2<-data.frame(T = c(25, 25, 25, 85, 125, 125), V =c(1.03, 1.06, 1.56,1.75,1.82, 1.85), type=c(7,7,7,7,7,7)) 

df.t2 <-select(df,c("T","V")) 
names(df.t2)[2]<- "type2" 
df.t5 <-select(df1,c("T","V")) 
names(df.t5)[2]<- "type5" 
df.t7 <-select(df2,c("T","V")) 
names(df.t7)[2]<- "type7" 

df.t2 = as.data.table(df.t2) # give an error 
df.t5 = as.data.table(df.t5) 
df.t7 = as.data.table(df.t7) 

df.plot <- left_join(df.t2, df.t5,by="T",all=TRUE) 

Antwort

0

Sie brauchen die data.table Bits überhaupt nicht.

require(plyr)

Zuerst alles in einem Datenrahmen kombinieren:

main <- rbind(df,df1,df2) 

benennen Sie dann Ihre Art Ebenen

main$type <- as.factor(main$type) 

main <- transform(main, type = revalue(type,c("2"="type2", "5"="type5", "7" = "type7"))) 

main$T <- as.factor(main$T) 

Schließlich Plot Mapping type als x-Achsen-Variable und V als Y-Achsenvariable.

g1 <-ggplot(main, aes(type, V))+geom_boxplot(aes(color=T),size=1.1) 

enter image description here

+0

Dank Mako212, sollte es boxplot 9 in dem Diagramm hat (T = 25, 85, 125 mit Typ = 2, 5, 7). Ich habe einen Fehler bekommen, als ich versucht habe, in Tabelle zu konvertieren, also wurde der Datenrahmen df.plot nicht vervollständigt. –

+0

@PeterRowan Ahh, das war nicht klar in Ihrer Frage, siehe mein Update. – Mako212

+0

Hallo Mako212, können Sie es so aussehen https://stackoverflow.com/questions/14604439/plot-multiple-boxplot-in-one-graph. Auf der X-Achse sollten nur drei Typen stehen, es ist in Ordnung, wenn der Boxplot sich überschneidet. Ich hatte die gleiche Handlung wie Sie mit "Interaktion" ". Danke. –

Verwandte Themen