2017-05-28 129 views
0

我有一個國家的衛生支出和預期壽命的數據集,並希望這些可視化的陰謀。在R中繪製線圖與ggplot2從數據集

我目前擁有的代碼:

dd = data.frame(Series_Name = "Health expenditure per capita (current US$) Australia", 
    Year = c(2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014), 
    Value = c(1665.200,1883.316,2370.881,2933.229,3214.031,3421.908,4077.852,4410.438,4256.641,5324.517,6368.424,6543.524,6258.467,6031.107)) 

對此我再用繪圖:

require(ggplot2) 
##The values Year, Value, School_ID are 
##inherited by the geoms 
ggplot(dd, aes(Year, Value,colour=Series_Name)) + 
    geom_line() + 
    geom_point() 

這顯示圖形我怎麼想,但問題是,我將能夠要指定應將哪些數據序列放置在值變量中以避免手動輸入數據,則不需要更改年份,並且可以保持原樣。

數據已從csv文件讀入並保存到變量「統計」中。數據是這樣的:

Series Name 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 
Health expenditure per capita (current US$) Australia 1665.200 1883.316 2370.881 2933.229 3214.031 3421.908 4077.852 4410.438 4256.641 5324.517 6368.424 6543.524 6258.467 6031.107 

如果我想將數據從澳大利亞改到日本,我將如何去這樣做,系列名稱設置了與國名之外相同。

感謝您的幫助!

編輯:認爲它可能有利於添加數據佈局的圖像。

image

的statistics.csv文件 - https://ufile.io/ocynw

+1

一種選擇是融化()你的數據框(從寬到長格式)。請參閱?reshape2 :: melt。然後你可以繪製所有的國家或只選擇其中的一些國家。如果您添加csv數據集,我們可以說明它的工作原理。請注意,數據的圖片無用。 –

+1

@ed_sans謝謝,我已經添加了一個鏈接到文件。這將非常感謝! – J22D

+0

嘗試'tidyr :: gather(df,key = year,value = expenditure,-'Series Name')'來重塑您的數據 –

回答

0

你可以用下面的辦法。如果您的數據幀被稱爲dd

names(dd) <- c("Series_Name", seq(2001,2014,1)) 
library(reshape2) 
library(tidyverse) 
library(stringr) 

我們首先從廣角轉換您的數據幀長格式:

dd2 <- melt(dd, id.vars=c("Series_Name"), value.name = c("value")) 

人均醫療保健支出「選擇變量只

dd2 <- dd2[startsWith(as.character(dd2$Series_Name), prefix = "Health expenditure per capita"), ] 

用圖例中出現的國家名稱創建一列:

dd2$country <- as.factor(word(dd2$Series_Name,-1)) 

對數據進行排序:

dd2 <- arrange(dd2, country) 

並繪製所有國家:

ggplot(dd2, aes(x = variable, y = value, group=country, color=country)) + geom_line() + 
    geom_point() 

enter image description here

如果你只想日本:

filter(dd2, country == "Japan") %>% 
ggplot(aes(x = variable, y = value, group=country, color=country)) + 
    geom_line() + geom_point() 
+1

我喜歡這個想法,我可能需要根據需求改變一些東西,但這很漂亮很多我想要的。我還沒有將數據集加載到數據框中,因爲您可以看到我只是在之前手動進行試驗和手動操作。你能給我一些關於如何將csv加載到幀dd中的提示嗎? – J22D

+0

使用dd < - read.csv(「C:\\ path \\ statistics.csv」)。也請參閱https://stackoverflow.com/help/someone-answers –

+1

謝謝你的幫助! – J22D