我有两个数据格式:insitu和model
dput(head(insitu,20))
structure(list(ID = c("AUR", "AUR", "AUR", "AUR", "AUR", "AUR",
"LAM", "LAM", "LAM", "LAM", "LAM", "LAM"), D_SOS = structure(c(16929,
17149, 17422, 17850, 18389, 18202, 17044, 16744, 17300, 17522,
18027, 18198), class = "Date"), D_EOS = structure(c(17067, 17353,
17712, 18082, 18516, 18360, 17123, 17002, 17414, 17722, 18148,
18446), class = "Date")), row.names = c(NA, -12L), class = c("tbl_df",
"tbl", "data.frame"))
dput(head(model,20))
structure(list(ID = c("AUR", "AUR", "AUR", "AUR", "AUR", "AUR",
"AUR", "AUR", "LAM", "LAM", "LAM", "LAM", "LAM", "LAM", "LAM"
), EVI_SOS = structure(c(16934, 17137, 17378, 17605, 17862, 18003,
18192, 18395, 16744, 17134, 17278, 17518, 17725, 18004, 18200
), class = "Date"), EVI_EOS = structure(c(17074, 17361, 17591,
17798, 17994, 18096, 18376, 18594, 17106, 17252, 17431, 17705,
17862, 18173, 18549), class = "Date")), row.names = c(NA, -15L
), class = c("tbl_df", "tbl", "data.frame"))我想要做的是:我想找出所选列和相应行上的两个数据文件之间的最佳匹配日期。换句话说,在列中的dataframe insitu中,D_SOS截取了列ID的AUR行,该列的日期与从dataframe model截取列ID的行的列EVI_SOS最匹配。在LAM行上也要做同样的事情。
所需的输出示例是:
dput(head(output,20))
structure(list(ID = c("AUR", "AUR", "AUR", "AUR", "AUR", "AUR",
"LAM", "LAM", "LAM", "LAM", "LAM", "LAM"), D_SOS = structure(c(16929,
17149, 17422, 17850, 18389, 18202, 17044, 16744, 17300, 17522,
18027, 18198), class = "Date"), EVI_SOS = structure(c(16934,
17137, 17378, 17862, 18395, 18192, 17134, 16744, 17278, 17518,
18004, 18200), class = "Date"), D_EOS = structure(c(17067, 17353,
17712, 18082, 18516, 18360, 17123, 17002, 17414, 17722, 18148,
18446), class = "Date"), EVI_EOS = structure(c(17074, 17361,
17798, 18096, 18594, 18376, 17252, 17106, 17431, 17705, 18173,
18549), class = "Date")), row.names = c(NA, -12L), class = c("tbl_df",
"tbl", "data.frame"))它看起来是这样的:
ID D_SOS EVI_SOS D_EOS EVI_EOS
1 AUR 2016-05-08 2016-05-13 2016-09-23 2016-09-30
2 AUR 2016-12-14 2016-12-02 2017-07-06 2017-07-14
3 AUR 2017-09-13 2017-07-31 2018-06-30 2018-09-24
4 AUR 2018-11-15 2018-11-27 2019-07-05 2019-07-19
5 AUR 2020-05-17 2020-05-13 2020-09-11 2020-11-28
6 AUR 2019-11-02 2019-10-23 2020-04-08 2020-04-24
7 LAM 2016-08-31 2016-11-29 2016-11-18 2017-03-27
8 LAM 2015-11-05 2015-11-05 2016-07-20 2016-11-01
9 LAM 2017-05-14 2017-04-22 2017-09-05 2017-09-22
10 LAM 2017-12-22 2017-12-18 2018-07-10 2018-06-23
11 LAM 2019-05-11 2019-04-18 2019-09-09 2019-10-04
12 LAM 2019-10-29 2019-10-31 2020-07-03 2020-10-14基本上,超过8月8日的model数据格式6将匹配,因为insitu在8月只有6个日期。对于LAM model,dataframe有7个日期,而insitu在LAM中有6个日期,这将是要匹配的数字。输出首先包含insitu的列,例如D_SOS,然后是model的列,例如与对应日期匹配的EVI_SOS。
任何帮助都会非常感激。
https://stackoverflow.com/questions/72199815
复制相似问题