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

时间:2019-10-28 12:59:10

标签: r

我想确定数据帧(DF)的潮汐状态

DF <- data.frame(Date = c(2012-01-01 05:37:00,2012-01-01 05:50:00,2012-01-01 05:58:00), Tide= NA)

基于以下Tides数据框:

Tides <- data.frame(Date=c(2012-01-01 05:31:00,2012-01-01 11:30:00,2012-01-01 17:58:00), Tide=c(low tide,high tide,low tide))

因此,我想根据数据与lowhighlow的亲近度,将数据分为highTide潮。数据框。

我试图首先在Tides数据帧中创建带有更多数据点的间隔,但是我没有成功,我也不确定那是否是正确的开始方式

我想得到这个结果,但是数据已经超过了几年,所以无法手动完成。

DF <- data.frame(Date = c(2012-01-01 05:37:00,2012-01-01 05:50:00,2012-01-01 05:58:00), Tide= c(low tide,low tide,low tide))

1 个答案:

答案 0 :(得分:0)

我相信可以使用which.min完成此操作,并且我正在根据绝对差值找到最近的时间。我已使用purrr逐行执行此操作。

我首先将日期时间转换为POSIXct:

DF = DF %>% 
  mutate(Date = as.POSIXct(Date))

Tides = Tides %>% 
  mutate(Date = as.POSIXct(Date))

代码如下:

require(dplyr)
require(purrr)
DF = DF %>% 
  dplyr::mutate(Tide = purrr::map_chr(.x=Date,~as.character(Tides$Tide[which.min(abs(Tides$Date-.x))])))

让我知道它是否有效。