使用R中的循环函数计算沉降率?

使用R中的循环函数计算沉降率?,r,R,我有一些河流沉积数据。每条河流由2个站点组成,有2-3个沉积板。进行了10年的试验,每1-3年测量一次沉积板上的沉积物深度(mm)。我想知道是否可以使用R回路来计算每条河流的每个场地的沉积速率?样本数据附呈 河流现场板块年“沉降量” 深度(毫米)” ES1 SiteA板1 2009 220 ES1 SiteA板1 2011 207 ES1现场A板1 2012 203 ES1现场A板1 2013 210 ES1现场A板1 2015 211.7 ES1 SiteA板1 2016 218 ES1 S

我有一些河流沉积数据。每条河流由2个站点组成,有2-3个沉积板。进行了10年的试验,每1-3年测量一次沉积板上的沉积物深度(mm)。我想知道是否可以使用R回路来计算每条河流的每个场地的沉积速率?样本数据附呈

河流现场板块年“沉降量”
深度(毫米)”
ES1 SiteA板1 2009 220
ES1 SiteA板1 2011 207
ES1现场A板1 2012 203
ES1现场A板1 2013 210
ES1现场A板1 2015 211.7
ES1 SiteA板1 2016 218
ES1 SiteA板1 2018 207
ES1现场A板1 2019 219.7
ES1现场A板2 2009 183
ES1 SiteA板2 2011 173
ES1现场A板2 2012 180
ES1现场A板2 2013 180
ES1 SiteA板2 2015 184
ES1 SiteA板2 2016 185
ES1 SiteA板2 2018 178
ES1现场A板2 2019 185.3
ES2现场B板1 2009 191
ES2 SiteB板1 2011 190
ES2现场B板1 2012 190
ES2现场B板1 2013 191
ES2 SiteB板1 2015 192.3
ES2现场B板1 2016 195
ES2 SiteB板1 2018 186
ES2现场B板1 2019 190.3
ES2现场B板2 2009 212
ES2现场B板2 2011 214
ES2现场B板2 2012 205
ES2现场B板2 2013 203
ES2现场B板2 2015 190.7
ES2现场B板2 2016 197
ES2 SiteB板2 2018 188

ES2 SiteB Plate 2 2019 191.3
假设您已将数据上载到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))
库(dplyr)
#创建年份差异列、费率差异列和费率差异列
表%
组别(河流、场地、板块)%>%
变异(年差异=年滞后(年),
沉积深度差=沉积深度mm-滞后(沉积深度mm),
每年的沉积物深度差异=沉积物深度差异/年差异)
#创建具有每条河流、场地、年份平均费率的新表
表u汇总%
解组()%>%
组别(河流、场地、年份)%>%
总结(平均速率=平均值(每年沉积物深度差))

请以文本形式发布输入数据最好以可复制和粘贴的格式包含数据,如
dput
的输出,并包含所需输出的明确声明。如果您包含到目前为止已经尝试过的代码,并解释为什么它不起作用(例如,您遇到了什么错误),那么它也很有用
diff
在这里很有用(请查看
?diff
),在进行计算之前,不要使用循环,而是尝试在
dplyr
中使用
groupby
,或在
data.table
中使用
by
,并按板块和站点分组。谢谢让我知道。我刚刚添加了我的数据作为文本。谢谢Lyngbakr,我将尝试使用DPLYR。谢谢Guillerme