首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在r中找到两个数据的最佳匹配日期?

如何在r中找到两个数据的最佳匹配日期?
EN

Stack Overflow用户
提问于 2022-05-11 10:58:25
回答 1查看 113关注 0票数 0

我有两个数据格式:insitumodel

代码语言:javascript
运行
复制
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行上也要做同样的事情。

所需的输出示例是:

代码语言:javascript
运行
复制
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"))

它看起来是这样的:

代码语言:javascript
运行
复制
   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

任何帮助都会非常感激。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72199815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档