【问题标题】:Is there an R function that will allow me to create a dummy variable based on a date being within a range?是否有一个 R 函数可以让我根据某个范围内的日期创建一个虚拟变量?
【发布时间】:2022-02-16 01:20:35
【问题描述】:

我在 A 列中有以下形式的高频数据,'yyyy-mm-dd hh:mm:ss',此列没有设置间隔。在 B 列中还有另一列相同形式的高频数据。B 列以 5 分钟为间隔。如果 A 列中的日期等于 B 列中的另一个单元格,或者它位于其中两个时间戳之间,我想生成一个等于 1 的虚拟变量。

例如,我在 A 列中有时间戳 2018-01-01 09:12:00,在 B 列中有两个时间戳 2018-01-01 09:10:00,然后是 2018-01-01 09 :15:00。在这种情况下,虚拟变量将等于 1,因为 A 列中的时间戳位于这两个日期之间。关联的虚拟变量将与 B 列中的第一个时间戳在同一行,2018-01-01 09:10:00。

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: r date


【解决方案1】:
library(tidyverse)
library(lubridate)

data <- tibble(
  Col_A = structure(c(1514935860, 1514936280, 1514946120, 1515090600, 1515090600, 1515095040), tzone = "UTC", class = c("POSIXct", "POSIXt")),
  Col_B = structure(c(1517564040, 1517564340, 1517564640, 1517564940, 1517565240, 1517565540), tzone = "UTC", class = c("POSIXct", "POSIXt"))  
)

data %>%
  mutate(a_in_b = Col_A  <= max(data$Col_B) & Col_A >= min(data$Col_B))

【讨论】:

  • 嗨,我尝试使用它,虽然代码运行完美,但我没有两列用于虚拟变量的间隔部分,只有 1 列。此外,我的数据集中没有虚拟变量出现,这我认为是因为我的间隔不同。我想如果我可以让间隔像 col_b, col_b +1 它可能会起作用,但我不知道该怎么做。
  • 除此之外,我在 A 列中有大约 13000 个观测值,在 B 列有大约 400,000 个观测值。
  • 请提供示例数据,例如使用dput(head(df))
  • Col_A = 结构(c(1514935860, 1514936280, 1514946120, 1515090600, 1515090600, 1515095040), tzone = "UTC", class= c("POSIXct", "POSIXt")) (c(1517564040, 1517564340, 1517564640, 1517564940, 1517565240, 1517565540), tzone = "UTC", class= c("POSIXct", "POSIXt")),
  • 你想如何定义Col_B的区间?如果 a 中的一个元素在 min(data$Col_B)max(data$Col_B) 内,只需将新列设置为 1 ?还是有很多间隔?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多