2017-10-11 105 views
0

我有一個如下所示的CSV文件。如何在數據框中將月份更改爲月份?

year=c("2015","2016","2017") 
month=c("1","2","3","4","5","6","7","8","9","10","11","12") 
freq=c("10","12","16","12","21","16","23","22","20","19","21","15") 
df=data.frame(year, month, freq) 

ggplot(df, aes(x=month, y=freq, fill=year))+geom_bar(stat="identity) 

axis.x顯示1,10,11,12,2,3,4,5,6,7,8,9

我想1,2,3,4,5,6,7,8,9,10,11,12

我該怎麼辦?

+1

不要存儲數字串。在這種情況下,不幸的是字符串被'data.frame'轉換爲因子,所以你需要做'df $ month < - as.integer(as.character(df $ month))'使它們回到整數,儘管從數字開始顯然更好。你的其他專欄也一樣。 – alistaire

+0

這不是一個CSV文件,你是從矢量創建一個數據框。你的真實代碼是否讀取一個文件? – neilfws

回答

0

使用係數。繪製之前試試這個:

df$month <- factor(month, levels = 1:12) 

如果你有,你可以手動設置水平,使ggplot2應當按照您選擇的順序。

+0

由於'stringsAsFactors = FALSE'沒有被指定,'month'將已經成爲使用問題中代碼的一個因素。問題是水平的順序。 – neilfws

+0

我正在構建答案哈哈。首先我嘗試了'month < - 1:12',之後我完全重現了這個例子。儘管如此,你確實評價得很快,效果很好。 –

+0

謝謝!我解決了:D –

0

由於@alistaire說,最好只用在首位數值開始,爲month和所有其他變量:

month <- 1:12 

然後獲得在x軸正確的標籤,添加此到您的最後ggplot

+ scale_x_continuous(breaks = 1:12)