向r中的字段数据集添加插值模型数据列
我试图将我的模型数据与r中的字段数据进行比较。现场数据位于特定深度(1,20,50,75100150…)。模型数据输出不在同一深度,必须进行插值(线性),最好添加到现场数据的新列中 我想在模型数据的每一行上运行一个for循环,并使用approx函数插值数据,以适应字段数据的深度,并将其添加到model_chla列中。我从两个数据集中提取了相同的日期(19个日期),因此只需要对模型深度进行插值向r中的字段数据集添加插值模型数据列,r,for-loop,interpolation,calibration,R,For Loop,Interpolation,Calibration,我试图将我的模型数据与r中的字段数据进行比较。现场数据位于特定深度(1,20,50,75100150…)。模型数据输出不在同一深度,必须进行插值(线性),最好添加到现场数据的新列中 我想在模型数据的每一行上运行一个for循环,并使用approx函数插值数据,以适应字段数据的深度,并将其添加到model_chla列中。我从两个数据集中提取了相同的日期(19个日期),因此只需要对模型深度进行插值 chla_FIELD # some of the field data with the
chla_FIELD # some of the field data with the empty model column
date depth chla model_chla
1 2008-02-21 1 0.06 NA
2 2008-02-21 20 0.05 NA
3 2008-02-21 50 0.03 NA
4 2008-02-27 1 0.08 NA
5 2008-02-27 20 0.04 NA
6 2008-02-27 50 0.03 NA
7 2008-02-27 75 0.03 NA
8 2008-02-27 100 0.01 NA
9 2008-03-07 1 0.07 NA
10 2008-03-07 20 0.05 NA
11 2008-03-07 50 0.03 NA
12 2008-03-07 75 0.02 NA
13 2008-03-07 100 0.02 NA
14 2008-03-07 150 0.01 NA
chla_MODEL # Some of the model data to be interpolated to field data depths and added to column
dt depth chla
766 2008-02-21 1.0 0.22385520
767 2008-02-21 7.5 0.21676594
768 2008-02-21 15.0 0.19189246
769 2008-02-21 25.0 0.15524526
770 2008-02-21 40.0 0.14638090
771 2008-02-21 62.5 0.14301939
772 2008-02-21 87.5 0.14094244
773 2008-02-21 112.5 0.13897014
774 2008-02-21 137.5 0.13680272
775 2008-02-21 162.5 0.13430916
776 2008-02-21 187.5 0.13133907
777 2008-02-21 212.5 0.12757768
778 2008-02-21 237.5 0.12237051
779 2008-02-21 262.5 0.11396441
780 2008-02-21 287.5 0.09206185
856 2008-02-27 1.0 0.24240938
857 2008-02-27 7.5 0.23447734
858 2008-02-27 15.0 0.21238998
859 2008-02-27 25.0 0.15545718
860 2008-02-27 40.0 0.14592259
861 2008-02-27 62.5 0.14171122
862 2008-02-27 87.5 0.13900438
863 2008-02-27 112.5 0.13662824
我的开始是这样的,但我不熟悉approx函数并在循环中向列添加数据
chla_approx <- function(FieldDATA, ModelDATA)
for (row in FieldDATA) {
}
chla_近似值以下代码假设chla_字段中的所有日期都存在于chla_模型中
如果数据集中的日期已经属于“日期”类,则不需要这两条说明
chla_FIELD$date <- as.Date(chla_FIELD$date)
chla_MODEL$dt <- as.Date(chla_MODEL$dt)
最终清理
rm(sp_field, sp_model)
谢谢你,芮。出于统计目的,如果我向两个数据集添加“源”列:
date depth chla source
1 2008-02-21 1 0.06 FIELD
2 2008-02-21 20 0.05 FIELD
3 2008-02-21 50 0.03 FIELD
dt depth chla source
766 2008-02-21 1.0 0.22385520 MODEL
767 2008-02-21 7.5 0.21676594 MODEL
768 2008-02-21 15.0 0.19189246 MODEL
769 2008-02-21 25.0 0.15524526 MODEL
770 2008-02-21 40.0 0.14638090 MODEL
771 2008-02-21 62.5 0.14301939 MODEL
在拆分函数之后,如何将数据按系列合并?(仍对模型chla进行插值以匹配场深度)以获得如下结果:
1 2008-02-21 1 0.06 FIELD
2 2008-02-21 20 0.05 FIELD
3 2008-02-21 50 0.03 FIELD
1 2008-02-21 1 0.06 MODEL
2 2008-02-21 20 0.05 MODEL
3 2008-02-21 50 0.03 MODEL
4 2008-02-27 1 0.08 FIELD
5 2008-02-27 20 0.04 FIELD
6 2008-02-27 50 0.03 FIELD
4 2008-02-27 1 0.08 MODEL
5 2008-02-27 20 0.04 MODEL
6 2008-02-27 50 0.03 MODEL
谢谢你,芮。这正是我想要的,也是一个简单的解决方案。现在我得到了一些非常好的校准图niels您可以将它们与rbind
或do.call(rbind,df_list)
组合,其中df_list
是一个data.frames列表。
1 2008-02-21 1 0.06 FIELD
2 2008-02-21 20 0.05 FIELD
3 2008-02-21 50 0.03 FIELD
1 2008-02-21 1 0.06 MODEL
2 2008-02-21 20 0.05 MODEL
3 2008-02-21 50 0.03 MODEL
4 2008-02-27 1 0.08 FIELD
5 2008-02-27 20 0.04 FIELD
6 2008-02-27 50 0.03 FIELD
4 2008-02-27 1 0.08 MODEL
5 2008-02-27 20 0.04 MODEL
6 2008-02-27 50 0.03 MODEL