В R, как мне получить функцию цикла для работы с уникальными сайтами, где site_id присутствует в каждой строке? - PullRequest
3 голосов
/ 29 апреля 2019

Я пытаюсь создать цикл кода, в котором я делаю среднегодовые значения по времени для каждого сайта (в данном случае озера).У меня есть следующие (подмножество моих) данных:

 SITE    YEAR   ANC   DOC    NO3    SBC_ALL  SBC.Na   SO4
 1434021 1996 -25.318 2.439 18.701  91.327  79.580  99.695
 020059O 2012  70.010 8.070  2.750 147.270 186.350  45.540
 1434021 1997 -22.534 2.387 21.617  96.635  84.946 102.071
 1434025 1994  25.352 1.595 15.334 172.988 159.256 117.223
 020059O 2003  48.140 7.860  4.410 156.010 188.340  78.000
 020059O 1993  28.230 7.430  3.420 139.540 181.590  84.550
 1364959 1993   6.050 0.756 19.111 148.300 131.157 118.411
 1434021 2008  -4.386 2.420 13.861  80.651  70.136  82.469
 143400680 1996 -20.842 4.961 16.075  99.999  88.871  88.057
 1364959 1997   2.650 1.845 25.613 143.504 126.480 104.679

Я запускаю следующий код и получаю графики для каждой строки данных.Я хочу получить графики только для каждого конкретного сайта (например, SITE = 020059O).Каждый сайт имеет среднегодовое значение за каждый год с 1990 по 2017 год.

for (site_id in mydata$SITE)
{ 
p <-
 filter(mydata, SITE == site_id) %>%
  ggplot(aes(x = YEAR, y = ANC)) +
  geom_line() +
  geom_point() +
  theme_bw() +
  ggtitle(site_id)
print(p)
}

Этот код дает:

Пример ежегодного ANC на сайте 020059O

Я рассмотрел использование функции different () или unique (), но, похоже, они удаляют дубликаты.Мне нужны дубликаты в данных, потому что они содержат год и среднее значение за этот год.Какие еще варианты у меня есть, чтобы я мог запустить ggplot только на уникальном САЙТЕ, но сохранил данные за год, которые мне нужны?

Оригинальная идея для кода цикла пришла от: http://www.r -gators.com / 2017/ 10/25 / петель-в-г /

1 Ответ

1 голос
/ 29 апреля 2019
for (site_id in unique(mydata$SITE))
  { 
    p <- filter(mydata, SITE == site_id) %>%
      ggplot(aes(x = YEAR, y = ANC)) +
      geom_line() +
      geom_point() +
      theme_bw() +
      ggtitle(site_id)
      print(p)
  }

Это только удаляет дубликаты из списка идентификаторов для циклического прохождения - вы все равно получите несколько строк в выводе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...