R中的线图上的多条线

Multiple lines on a line plot in R

我正在尝试在 R 中创建一个线图,显示不同位置随时间变化的线。

我的数据在 table 中,第一列为 Year,位置 England, Scotland, Wales, NI 作为单独的列:

     Year   England Scotland Wales  NI
1  2006/07      NA     411   188   111
2  2007/08      NA     415   193   112
3  2008/09      NA     424   194   114
4  2009/10      NA     429   194   115
5  2010/11      NA     428   199   116
6  2011/12      NA     428   200   116
7  2012/13      NA     425   199   117
8  2013/14      NA     427   202   117
9  2014/15      NA     431   200   121
10 2015/16   3556      432   199   126
11 2016/17   3436      431   200   129
12 2017/18   3467      NA    NA    NA

我正在使用 ggplot,可以得到任何地方的线图,但我很难得到同一地块上所有地方的线。

如果我在一列中也有位置(而不是在顶部),这似乎可行,因为我可以在下面的代码中将 y 设置为该列,而不是是一个特定的地方。但这似乎有点令人费解,因为我有大量现有格式的数据,我希望有一种方法可以使用我现有的格式来完成此操作,或者有一种快速转换它的方法。

ggplot(data=mysheets$sheet1, aes(x=Year, y=England, group=1)) +
  geom_line()+
  geom_point()

据我所知,我需要重塑我的数据(变成长格式?)但是我还没有找到一种方法来做到这一点,因为我没有地方列(即,我每个地方都有一列,但 table 没有办法说这些都是地方和同一类东西)。

我也试过转置我的数据,所以位置在下面,年份在上面,但是 R 仍然有自己的 headers 用于列 - 我想另一个选择可能是是否可以将年份设置为 headers 并被 R 识别?

如您所说,您必须转换为长格式才能充分利用 ggplot2

library(ggplot2)
library(dplyr)

mydata_raw <- read.table(
  text = "
  Year   England Scotland Wales  NI
  1  2006/07      NA     411   188   111
  2  2007/08      NA     415   193   112
  3  2008/09      NA     424   194   114
  4  2009/10      NA     429   194   115
  5  2010/11      NA     428   199   116
  6  2011/12      NA     428   200   116
  7  2012/13      NA     425   199   117
  8  2013/14      NA     427   202   117
  9  2014/15      NA     431   200   121
  10 2015/16   3556      432   199   126
  11 2016/17   3436      431   200   129
  12 2017/18   3467      NA    NA    NA"
)

# long format
mydata <- mydata_raw %>% 
  tidyr::gather(country, value, England:NI) %>% 
  dplyr::mutate(Year = as.numeric(substring(Year, 1, 4))) # convert to numeric date

ggplot(mydata, aes(x = Year, y = value, color = country)) + 
  geom_line() +
  geom_point()