我有一个过去50年按国家平均预期寿命的.csv文件。我试图按国家创建一个预期寿命图表,其中x轴为1960-2011,y轴为平均寿命。我只想绘制十大国家,每个国家都有自己的路线。 我已经研究了各种可能的方法来绘制我所拥有的数据的多线图,并且在我看来,数据的格式化是不可能的。我的问题是:
我能够在Excel 中创建所需的图形,这正是我想在R中做的。
这是lexp.csv文件的链接。 https://drive.google.com/file/d/0BwsBIUlCf0Z3QVgtVGt4ampVcmM/view?usp=sharing
答案 0 :(得分:2)
您是正确的,数据将从重组中受益。这是一个“广泛到长期”的问题即最好有3列:国家,年份和年龄。
您可以使用tidyr
包重新格式化数据,使用dplyr
包处理数据并使用ggplot2
绘图。因此,假设您已将CSV读入R并拥有名为lexp
的数据框,您可以尝试这样的事情:
library(dplyr)
library(tidyr)
library(ggplot2)
lexp %>%
# reformat from wide to long
gather(Year, Age, -Country, convert = TRUE) %>%
# select most recent year
filter(Year == max(Year)) %>%
# sort by decreasing age
arrange(desc(Age)) %>%
# take the top 10 countries
slice(1:10) %>%
select(Country) %>%
# join back to the original data
inner_join(lexp) %>%
# reformat again from wide to long
gather(Year, Age, -Country, convert = TRUE) %>%
# and plot the graph
ggplot(aes(Year, Age)) + geom_line(aes(color = Country, group = Country)) +
theme_dark() + theme(axis.text.x = element_text(angle = 90)) +
labs(title = "Life Expectancy") +
scale_color_brewer(palette = "Set3")
答案 1 :(得分:0)
library("reshape2")
library("ggplot2")
test_data_long <- melt(df, id="Country") # convert to long format
testdata<-test_data_long[complete.cases(test_data_long),]
ggplot(data=testdata,
aes(x=variable, y=value)) +
geom_line(aes(color = Country, group = Country))