【问题标题】:Trying to generate a dummy variable based on a range of data and one cell试图根据一系列数据和一个单元格生成一个虚拟变量
【发布时间】:2022-01-17 18:55:46
【问题描述】:

我有一个包含两个日期列的数据集。两个日期列都涉及发生的不同事件。如果日期和时间都匹配,我想生成一个等于 1 的虚拟变量。例如,如果另一个日期列中的一个日期是(YY/MM/DD 格式)17/05/01 19:30:00,另一个日期是 17/05/01 19:30:00,则虚拟变量等于 1。

我需要虚拟变量函数来检查整个日期列,而不仅仅是检查日期列中的一个单元格。我对 R 比较陌生,我没有很好地解释这一点,但在第一个日期列中说日期和时间是 19/06/04 14:23:00。我希望该函数检查整个其他日期列是否具有完全相同的日期和时间戳,并由此生成虚拟变量。

感谢任何帮助!

【问题讨论】:

  • See here 关于制作一个更易于人们帮助的可重现示例。这里没有任何人可以用来帮助您的明确示例
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: r date dummy-variable


【解决方案1】:

根据您的描述,我认为您的列是日期时间,而不仅仅是日期,对吗?这是一个重要的区别,因为日期和日期时间在 R 中是单独的类。如果您提供数据样本以便人们能够更好地理解和帮助,这也很有帮助。将来您可以使用dput(head(df, 10)) 之类的东西,然后将输出复制并粘贴到您的问题中。对于这个问题,我相信你想要的应该很简单。

这里我们创建一些数据作为示例:

x <- c("22/01/01 08:00:00", "22/01/02 08:00:00", "22/01/03 08:00:00", "22/01/01 09:00:00")
x <- as.POSIXct(x, format = c("%y/%m/%d %H:%M:%S"))
y <- c("22/01/01 09:00:00", "22/01/01 08:00:00", "22/01/01 09:00:00", "22/01/02 10:00:00")
y <- as.POSIXct(y, format = c("%y/%m/%d %H:%M:%S"))

df <- data.frame(x, y)

如果你的日期时间是你在问题中列出的格式,我会冒昧地说它们是字符,可能需要像我上面所做的那样格式化为 POSIXct 格式。您可以使用日期部分,但您可能需要根据格式更改时间。我认为这部分可能比创建指标变量本身需要更长的时间。

该策略只是创建您要检查的日期时间的参考向量,然后查看您感兴趣的日期时间是否在其中。

date_check <- df$y
df$x_in_y <- ifelse(df$x %in% date_check, "yes", "no")

这就是它的样子。您会注意到它们是否被视为不相等的时间不同。

df
#>                     x                   y x_in_y
#> 1 2022-01-01 08:00:00 2022-01-01 09:00:00    yes
#> 2 2022-01-02 08:00:00 2022-01-01 08:00:00     no
#> 3 2022-01-03 08:00:00 2022-01-01 09:00:00     no
#> 4 2022-01-01 09:00:00 2022-01-02 10:00:00    yes

reprex package (v2.0.1) 于 2022-01-17 创建

【讨论】:

  • 谢谢您,您知道如何更改它,以便如果它们的时间完全相同,它们将被视为“是”类别。
  • @RonanDunne 你只想比较时间而不考虑日期,对吗?
猜你喜欢
  • 2020-05-24
  • 2012-08-10
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多