【问题标题】:Counting Observations Within Date Range R计算日期范围 R 内的观测值
【发布时间】:2020-12-05 19:30:42
【问题描述】:

这可能有一个非常简单的解决方案。我有两个数据集。一个是 POSIXct 推文时间戳的向量,第二个是 POSIXct ADL HEAT Map 时间戳的向量。

我正在寻找一个函数,让我可以从推文向量中获取日期,并为每个日期计算 ADL HEAT Map 向量中位于推文指定范围内的时间戳数。

我的目标是构建函数,以便我可以输入推文向量、ADL 向量、推文向量开始计数的天数以及推文向量停止计数的天数,以及返回一个与推文数据长度相同的计数向量。

我已经尝试过这里的解决方案,但没有成功:Count number of occurences in date range in R

这是我正在尝试做的一个示例。这是我正在使用的数据集的较小版本:

tweets <- c("2016-12-12 14:34:00 GMT", "2016-12-5 17:20:06 GMT")
ADLData <- c("2016-12-11 16:30:00 GMT", "2016-12-7 18:00:00 GMT", "2016-12-2 09:10:00 GMT")

我想创建一个函数,我们称之为countingfunction,它可以让我输入第一个数据集,第二个数据集,并调用天数来回顾。在本例中,我选择了 7 天:

countingfunction(tweets, ADLData, 7)

理想情况下,这将返回一个长度为 tweets 的向量,或者在本例中为 2,其中包含从 tweets 中的日期起的过去 7 天内发生的 ADLData 中的每个事件的计数。在这种情况下,c(2,1)

【问题讨论】:

  • 请使用dput 添加数据并显示相同的预期输出。请阅读有关how to ask a good question 的信息以及如何提供reproducible example
  • 如果您阅读了我之前分享的链接,它会分享有关如何分享可重现示例的提示。一个可重现的例子是我们可以复制/粘贴到我们的会话中的东西。当我复制/粘贴您的代码时,我收到 object 'tweets' not found 错误。如果您显示预期的输出,我们可以使用它来验证我们的答案,这也会很有帮助。
  • 已编辑。很抱歉造成混乱。
  • 我添加了一个答案,看看是否有帮助。

标签: r date


【解决方案1】:

所以,如果我对你的理解正确的话,你就有这样的数据:

tweets <- c(as.POSIXct("2020-08-16", tz = ""), as.POSIXct("2020-08-15", tz = ""), as.POSIXct("2020-08-14", tz = ""), as.POSIXct("2020-08-13", tz = ""))
ADL <- c(as.POSIXct("2020-08-15", tz = ""), as.POSIXct("2020-08-14", tz = ""))

而您想要做的是说明一条推文是否在 ADL 日期范围内。这样做可以完成:

ifelse(tweets %in% ADL, print("its in"), print("its not"))

您可以轻松地将其分配给另一个向量,然后该向量会说明它是否在中。

【讨论】:

  • 这不是我想要的。我编辑了上面的问题以使其更清楚。
【解决方案2】:

您可以在outer 的帮助下编写countingfunction,并使用difftime 计算两个向量的每个值之间的时间差。

countingfunction <- function(x1, x2, n) {
  mat <- outer(x1, x2, difftime, units = 'days')  
  rowSums(mat > 0 & mat <= n)
}

假设您有像这样的POSIXct 类向量:

tweets <- as.POSIXct(c("2016-12-12 14:34:00", "2016-12-5 17:20:06"), tz = 'GMT')
ADLData <- as.POSIXct(c("2016-12-11 16:30:00","2016-12-7 18:00:00", 
                        "2016-12-2 09:10:00"), tz = 'GMT')
n <- 7

您可以将它们传递为:

countingfunction(tweets, ADLData, n)
#[1] 2 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    相关资源
    最近更新 更多