如何合并 R 两个数据帧中范围内的范围

问题描述 投票:0回答:1

我的大脑没有动脑子,我不知道如何在 R 中合并一个范围内的两个数据帧。我希望你能帮助我。

df1 <- data.frame(
  type = rep("A", 6),
  start = c(66, 753, 1436, 2121, 8080, 8982),
  end = c(752, 1435, 2120, 2805, 8972, 9312),
  col1 = c(97.384, 97.23, 97.522, 97.522, 97.522, 97.376),
  col2 = c(686, 682, 684, 684, 892, 330)
)

df2 <- data.frame(
  name = c("apple", "apple"),
  start = c(651, 8009),
  end = c(7964, 9314),
  val = c(71298, 1982),
  ave_val = c(9.749487215, 1.518773946)
)

这就是我想要得到的结果,它是一个结果列,当它在范围内时,将 cover 与 ave_val 相乘。或者,如果范围在范围内,则它可以只是 col2 乘以 ave_val。

类型 开始 结束 col1 col2 封面 结果
A 66 752 97.384 686 101 984.698209
A 753 1435 97.23 682 682 6649.15028
A 1436 2120 97.522 684 684 6668.64925
A 2121 2805 97.522 684 684 6668.64925
A 8080 8972 97.522 892 892 1354.74636
A 8982 9312 97.376 330 330 501.195402

谢谢!

r merge range inner-join
1个回答
0
投票

哎呀,这行得通。

interval_join(df1, df2, by = c("start", "end"), mode = "inner") %>% 
  group_by(start.x, end.x) %>% 
  slice(1) %>%
  mutate(result = col2*ave_val)

现在,我只需要弄清楚如何制作cov列

© www.soinside.com 2019 - 2024. All rights reserved.