2017-05-28 122 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