Использовать функцию цикла в R для расчета скорости оседания? - PullRequest
0 голосов
/ 02 октября 2019

У меня есть данные по седиментации реки. Каждая река состояла из 2 участков с 2-3 отстойниками. Эксперимент проводился в течение 10 лет, и глубина отложений (мм) осажденных отложений на каждой пластине измерялась с интервалом 1-3 года. Мне интересно, можно ли использовать цикл R для расчета скорости осаждения для каждого участка для каждой реки? образец данных прилагается.

River	Site	Plate	Year	"Sedement 
depth(mm)"
ES1	SiteA	Plate 1	2009	220
ES1	SiteA	Plate 1	2011	207
ES1	SiteA	Plate 1	2012	203
ES1	SiteA	Plate 1	2013	210
ES1	SiteA	Plate 1	2015	211.7
ES1	SiteA	Plate 1	2016	218
ES1	SiteA	Plate 1	2018	207
ES1	SiteA	Plate 1	2019	219.7
ES1	SiteA	Plate 2	2009	183
ES1	SiteA	Plate 2	2011	173
ES1	SiteA	Plate 2	2012	180
ES1	SiteA	Plate 2	2013	180
ES1	SiteA	Plate 2	2015	184
ES1	SiteA	Plate 2	2016	185
ES1	SiteA	Plate 2	2018	178
ES1	SiteA	Plate 2	2019	185.3
ES2	SiteB	Plate 1	2009	191
ES2	SiteB	Plate 1	2011	190
ES2	SiteB	Plate 1	2012	190
ES2	SiteB	Plate 1	2013	191
ES2	SiteB	Plate 1	2015	192.3
ES2	SiteB	Plate 1	2016	195
ES2	SiteB	Plate 1	2018	186
ES2	SiteB	Plate 1	2019	190.3
ES2	SiteB	Plate 2	2009	212
ES2	SiteB	Plate 2	2011	214
ES2	SiteB	Plate 2	2012	205
ES2	SiteB	Plate 2	2013	203
ES2	SiteB	Plate 2	2015	190.7
ES2	SiteB	Plate 2	2016	197
ES2	SiteB	Plate 2	2018	188
ES2	SiteB	Plate 2	2019	191.3

Скорость осаждения для каждого участка можно рассчитать следующим образом:

Например, ES1, SiteA, Год 2015 = Пластина 1 (211,7-210) / 2 (год различия) Пластина 2 (184-180) / 2

  Sedimentation rate for 2015 = avg [Plate 1 (211.7-210)/2(year diff)+ Plate 2 (184-180)/2]

1 Ответ

0 голосов
/ 03 октября 2019

Предположим, вы загрузили данные в R. Затем вы можете сделать dplyr.

library(dplyr)
#create the year diff column, the rate diff column and the rate diff column
table <- table %>%
   group_by(River, Site, Plate) %>%
   mutate(Year_diff = Year - lag(Year),
          sediment_depth_diff = Sedement_depth_mm - lag(Sedement_depth_mm),
          sediment_depth_diff_per_year = sediment_depth_diff/Year_diff)

#create new table with average rate per river, site, year
table_summary <- table %>% 
    ungroup() %>%
    group_by(River, Site, Year) %>%
    summarise(avg_rate = mean(sediment_depth_diff_per_year))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...