2016-04-01 11 views
-1

Die Tabelle besteht aus einem Monat/Jahr-Feld, d. H. "Januar 2016". Wie verwende ich den Neuordnungs eine boxplot die X-Achse in chronologischer Reihenfolge (Jan 2016 anzuzeigen ... 2016 Februar .... Was ich versuchte, den folgenden Code:R Boxplot: Wie "ordne" ich das Datumsfeld?

 boxplot(YR$S~reorder(format(YR$MY,'%M %Y'),YR$MY),outline =FALSE) 
<pre> 

IDX MY Day V Time G S W 
24 January 2015 1 G 1821 6 11 71 
25 January 2015 2 G 1600 9 15 1 
26 January 2015 5 G 1700 5 14 64 
27 January 2015 6 F 1805 3 14 4 
28 January 2015 7 G 1716 3 15 45 
29 January 2015 9 F 1910 3 8 38 

+1

Die Antwort wird vom Format abhängig Die Daten sind in. Wird die Spalte als Datum, String oder Faktor formatiert? Es würde helfen, ein Beispiel Ihrer Daten zu sehen, bevor Sie eine Empfehlung abgeben. – Dave2e

+2

Können Sie ein kleines Datensample mit 'dput' liefern? – steveb

+0

wenn Sie nur haben ein Paar, das du benutzen kannst 'boxplot (..., at = 5: 1)' – rawr

Antwort

0

Wie ich oben in Abhängigkeit von dem Format der Daten erwähnt und wie man am besten ist die Daten (dh monatlich täglich) würde die Empfehlung beeinflussen. Im Folgenden verschiedene Ansätze, die ich in Betracht ziehen würde (nicht der beste Weg sein kann, aber es kann den Job zu erledigen):

#Sample data 
string<-rep(c("January 2016", "February 2016", "March 2016"), 3) 
day<-rep(c(1:3), each=3) 
value<-runif(9,10, 20) 
#data frame with string, int and float 
df<-data.frame(string, day, value) 

#Date as string 
boxplot(df$value~df$string, las=2, main="String") 
#undersirable - x - axis not in order 

#Date as a Date Class 
#convert to Date Class 
#xdate<-as.Date(paste(df$string, day), format= "%B %Y %d") 
#Need to convert everything to first of month to bin by month 
xdate<-as.Date(paste(df$string, 1), format= "%B %Y %d") 
b<-boxplot(df$value~xdate, las=2, main="Date", names=unique(months(xdate))) 
#Good - may need work on x axis labels 

#Date as a factor 
#convert to factor 
xfactor<-as.factor(df$string) 
#sets the factors in month order (drops the year suffix) 
xfactor<-factor(xfactor, levels = paste(month.name, "2016")) 
#remove unused levels 
xfactor<-droplevels(xfactor) 
boxplot(df$value~xfactor, las=2, main="factor") 
#Good - may need work on x axis labels depending in timeframe on interest 

All drei Versuche haben ihre Vor- und Nachteile und je nach Ausgangsformat, wie viele Daten, Berichtshäufigkeit und die Endergebnisse bestimmen den besten Ansatz. Hoffe, das hilft.

0

Konvertieren Sie Ihre so Daten Klasse Date, dass boxplot die entsprechende kontinuierliche Skala für die x-Achse wählen und Ihre Werte bestellen automatisch:

y <- YR$S 
oldloc <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "english") 
x <- as.Date(with(YR, paste(paste(MY, Day, sep = "-"))), format="%B-%Y-%d") 
Sys.setlocale("LC_TIME", oldloc) 
boxplot(y~x) 

stelle ich das Gebietsschema auf Englisch, so dass R weiß, wie „Januar“ zu interpretieren, in ausländischen lang urges (auf Deutsch zum Beispiel ist es "Januar"). Sie können das weglassen, wenn Sie auf Englisch bereits gesetzt sind ...

Daten verwendet:

YR <- read.table(header=T, text=" 
MY Day V Time G S W 
February-2015 1 G 1821 6 11 71 
January-2015 2 G 1600 9 15 1 
January-2015 5 G 1700 5 14 64 
January-2015 6 F 1805 3 14 4 
January-2015 7 G 1716 3 15 45 
January-2015 9 F 1910 3 8 38") 
0

Vielen Dank für Ihre Antworten. Es stellt sich heraus, dass es eine viel kürzere und einfachere soution gibt. Die Bibliothek „RLAB“ verfügt über eine integrierte in Box-Diagramm + Binning-Funktion namens „bplot Hier ist ein copde. Beispiel: (MY = Monat-Jahr-Feld, S = Anzahl der Sonnenflecken)

library(Rlab) 
bplot(MY,S) 
Verwandte Themen