按组合并另一个数据框中的最近日期和相关变量

西蒙

我有两个数据框,每个数据框每个ID有多行。我需要根据第一个数据帧的ID和日期从第二个数据帧返回最接近的日期和相关数据-将相关数据添加到第一个数据帧。这也必须与NA第二个数据帧中的s一起使用。示例数据:

set.seed(42)
df1 <- data.frame(ID = sample(1:3, 10, rep=T), dateTarget=(strptime((paste
    (sprintf("%02d", sample(1:30,10, rep=T)), sprintf("%02d", sample(1:12,10, rep=T)), 
     (sprintf("%02d", sample(2013:2015,10, rep=T))), sep="")),"%d%m%Y")), Value=sample(15:100, 10, rep=T))
df2 <- data.frame(ID = sample(1:3, 10, rep=T), dateTarget=(strptime((paste
     (sprintf("%02d", sample(1:30,20, rep=T)), sprintf("%02d", sample(1:12,20, rep=T)), 
     (sprintf("%02d", sample(2013:2015,20, rep=T))), sep="")),"%d%m%Y")), ValueMatch=sample(15:100, 20, rep=T))

base最好的东西-splitapply家庭的混合体

决赛桌看起来像:

  ID dateTarget Value dateMatch ValueMatch
1  3   22-02-15    52  09-03-15         94
2  1   29-12-14    18  06-12-14         88
3  3   08-12-15    98  06-07-15         48
4  2   14-01-13    52  08-04-13         77
5  2   29-07-15    97  01-08-15         68
6  3   30-05-13    91  01-04-13         85
7  1   04-11-13    70  21-02-14         35
8  2   15-06-15    98  01-08-15         68
9  3   17-11-14    68  15-12-14         95

PS是否有更好的方法来生成随机日期(不使用seq.Date)?

马拉特·塔利波夫(Marat Talipov)

这是基于基本软件包的解决方案:

z <- lapply(intersect(df1$ID,df2$ID),function(id) {
   d1 <- subset(df1,ID==id)
   d2 <- subset(df2,ID==id)

   d1$indices <- sapply(d1$dateTarget,function(d) which.min(abs(d2$dateTarget - d)))
   d2$indices <- 1:nrow(d2)

   merge(d1,d2,by=c('ID','indices'))
  })

z2 <- do.call(rbind,z)
z2$indices <- NULL

print(z2)

#    ID dateTarget.x Value dateTarget.y ValueMatch
# 1   3   2015-11-14    47   2015-07-06         48
# 2   3   2015-12-08    98   2015-07-06         48
# 3   3   2015-02-22    52   2015-03-09         94
# 4   3   2014-11-17    68   2014-12-15         95
# 5   3   2013-05-30    91   2013-04-01         85
# 6   1   2013-11-04    70   2014-02-21         35
# 7   1   2014-12-29    18   2014-12-06         88
# 8   2   2013-01-14    52   2013-04-08         77
# 9   2   2015-07-29    97   2015-08-01         68
# 10  2   2015-06-15    98   2015-08-01         68

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从另一个数据框中按组正确合并变量?

如何按另一个表中某一列的最新最近日期对行进行分组?

在一个数据框中查找零值并替换为从另一个数据框中最近的日期时间读数

快速创建一个数据框中的变量作为另一个数据框中其他变量和值的函数的方法?

根据日期和月份从另一个数据框索引重新排列数据框中的组

通过匹配r中的值和列名,将一个数据框的值合并到另一个数据框

选择具有最近日期的唯一值,按另一个值分组

根据另一个数据框中的日期过滤数据框中的值

选择一个数据框中的变量以从另一个数据框中绘制

根据日期从另一个数据框中过滤熊猫数据框

使用另一个数据框缩放数据框中的变量

从另一个缺少日期的数据框中返回最近三天的值

将日期与另一个数据框中的日期间隔匹配

在另一个数据库中设置组合框的rowsource属性?

根据另一个数据框中的最近位置填充熊猫数据框中的缺失值

根据变量组合,对数据框1的新列进行突变,并与另一个数据框2中的值进行匹配

提取每个主题(R)中另一个数据框中存在的日期

在数据框中创建一个新变量,条件是另一个数据框

按另一个数据框中的值分组

根据日期范围将数据框中的值除以另一个数据框中的日期

根据另一个数据框中的相同列组合替换数据框中的 NA

合并数据框列和基于另一个数据框列值的行到特定索引

根据另一个数据框中的日期条件创建新列

如果日期相同,如何从另一个数据框中填充列值

使用 scala 重命名与另一个数据框相关的数据框的列名

vba函数返回最近日期的记录。给出另一个标准

选择相对于另一个表的最近日期

用另一个数据框中的匹配变量替换列标题

根据另一个数据框中的2个变量删除数据框中的行