R语言 当多个变量都在同一列中时,如何使用多个变量创建折线图?

72qzrwbm  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(133)

structure(list(Sample.Id = c(NA, "2", "2", "2", "2", "2", "2",

“2”、“2”、“2”、“2”、“3”、“3”、“3”、“3”、“3”、“3”、“3”、“3”、“3”),取样日期= c(不适用,“2014年9月8日”、“2014年10月14日”、“2014年11月2日”、“2014年11月21日”、“2014年12月3日”、“2014年12月15日”、“2015年1月11日”、“2015年2月8日”、“2015年3月1日”、“2015年4月6日”、“2014年9月3日”、“2014年9月8日”,“2014年10月14日”、“2014年11月2日”、“2014年11月21日”、“2014年12月3日”、“2014年12月15日”、“2015年1月11日”、“2015年1月26日”),总P = c(“微克/毫升”、“0.002”、“0.017”、“0.035”、“0.04”、“0.059”、“0.155”、“0.021”、“0.022”、“0.025”、“〈0.009”、“0.021”、“0.003”、“0.036”、“0.141”、“0.041”、“0.044”、“0.01”、“0.023”、“0.016”),DOC = c(“微克/毫升”、不适用、“12.3”、“13.4”、“12.5”、“9.9”、“14.7”、“8.8”、“8.3”、“0.026”、“7.5”、“13.4”、不适用、“14.6”、“16.6”、“14.7”、“12.6”、“12.6”、“10.6”、“11.4”),总例数= c(“微克/毫升”,不适用,“3.63”,“4.12”,“3.98”,“4.08”,“3.38”,“3.63”,“4.88”,“8.3”,“2.74”,“2.48”,不适用,“3.07”,“3.38”,“3.3”,“3.43”,“2.19”,“2.77”,“4.25”),文件1 = c(“µg/ml”、“13.6”、不适用、不适用、不适用、不适用、不适用、不适用、不适用、不适用、“14.44”、“16.85”、不适用、不适用、不适用、不适用、不适用),总P.1 = c(“µg/ml”、“0.053”、不适用、不适用、不适用、不适用、不适用、不适用、不适用、不适用、“0.08”、“0.071”、不适用、不适用、不适用、不适用、不适用、不适用、不适用),总计。N = c(“µg/ml”,“3.363”,不适用,不适用,不适用,不适用,不适用,不适用,不适用,不适用,“2.645”,“2.637”,不适用,不适用,不适用,不适用,不适用)),行名称= c(不适用,20 L),类别=“ Dataframe ”
我有一组2014-2022年不同地点和不同时间段的水质数据。每个地点都有不同的监测期,数据是用两种不同的设备分析的,其中只有两个时间段重叠,样本是用两种机器分析的。我试图绘制一个时间序列,显示P,N和DOC在每个站点随着时间的推移和阴影的地区,一台机器被使用,而不是另一台。这一切都有点复杂,我是如此新的R,所以已经运行了一个星期的圈子。我的问题是我不确定如何选择我需要创建的变量所需的列的部分,这样才有意义。
我试着在博客上查了一下,但似乎不能把不同的建议融合在一起,使它发挥作用。任何提示将不胜感激。以下是我的数据。

qxsslcnc

qxsslcnc1#

您肯定需要清理数据以适应此解决方案,但基本方法是从宽格式透视到长格式。
然后,您需要确保您的日期是proper POSIXct格式。
然后,只需按相关变量分组并使用geom_line()绘图即可
我添加了facet_grid,以便用Sample.Id分隔。

library(tidyverse)
#> Warning: pakke 'ggplot2' blev bygget under R version 4.2.2
#> Warning: pakke 'tidyr' blev bygget under R version 4.2.2
#> Warning: pakke 'purrr' blev bygget under R version 4.2.2
#> Warning: pakke 'dplyr' blev bygget under R version 4.2.2
#> Warning: pakke 'stringr' blev bygget under R version 4.2.2
#> Warning: pakke 'forcats' blev bygget under R version 4.2.2

df <- structure(list(Sample.Id = c("2", "2", "2", "2", "2", "2", "2", 
                                    "2", "2", "2", "3", "3", "3", "3", "3", "3", "3", "3", "3"), 
                      Sampling..Date = c("08-Sep-14", "14-Oct-14", "02-Nov-14", 
                                         "21-Nov-14", "03-Dec-14", "15-Dec-14", "11-Jan-15", "08-Feb-15", 
                                         "01-Mar-15", "06-Apr-15", "03-Sep-14", "08-Sep-14", "14-Oct-14", 
                                         "02-Nov-14", "21-Nov-14", "03-Dec-14", "15-Dec-14", "11-Jan-15", 
                                         "26-Jan-15"), Tot.P = c("0.002", "0.017", "0.035", "0.04", 
                                                                 "0.059", "0.155", "0.021", "0.022", "0.025", "<0.009", "0.021", 
                                                                 "0.003", "0.036", "0.141", "0.041", "0.044", "0.01", "0.023", 
                                                                 "0.016"), DOC = c(NA, "12.3", "13.4", "12.5", "9.9", "14.7", 
                                                                                   "8.8", "8.3", "0.026", "7.5", "13.4", NA, "14.6", "16.6", 
                                                                                   "14.7", "12.6", "12.6", "10.6", "11.4"), Tot.N = c(NA, "3.63", 
                                                                                                                                      "4.12", "3.98", "4.08", "3.38", "3.63", "4.88", "8.3", "2.74", 
                                                                                                                                      "2.48", NA, "3.07", "3.38", "3.3", "3.43", "2.19", "2.77", 
                                                                                                                                      "4.25"), DOC.1 = c("13.6", NA, NA, NA, NA, NA, NA, NA, NA, 
                                                                                                                                                         NA, "14.44", "16.85", NA, NA, NA, NA, NA, NA, NA)), row.names = 2:20, class = "data.frame")

df |> 
  mutate(Tot.P = str_replace(Tot.P, "<", ""),
         across(Tot.P:DOC.1, as.numeric),
         Sampling..Date = as.POSIXct(Sampling..Date, format = "%d-%b-%y")) |> 
  select(-c(DOC.1)) |> 
  pivot_longer(cols = c(Tot.P, DOC, Tot.N)) |> 
  ggplot(aes(x = Sampling..Date, y = value, group = name, col = name)) + 
  geom_line() + 
  facet_grid(~Sample.Id)
#> Warning: Removed 5 rows containing missing values (`geom_line()`).

创建于2023年2月14日,使用reprex v2.0.2

相关问题