簡體   English   中英

計數日期范圍內的觀測值 R

[英]Counting Observations Within Date Range R

這可能有一個非常簡單的解決方案。 我有兩個數據集。 一個是 POSIXct 推文時間戳的向量,第二個是 POSIXct ADL HEAT Map 時間戳的向量。

我正在尋找構建一個 function 讓我從推文向量中獲取日期,並為每個計算 ADL HEAT Map 向量中位於推文指定范圍內的時間戳數。

我的目標是構建 function 以便我可以放入推文向量、ADL 向量、推文向量開始計數的天數以及推文向量停止計數的天數,並返回一個向量的計數與推文數據的長度相同。

我已經在這里嘗試過解決方案,但它沒有用: Count number of occurrences 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")

我想創建一個function,我們稱之為countingfunction ,讓我輸入第一個數據集,第二個,調用天數來回溯。 在本例中,我選擇了 7 天:

countingfunction(tweets, ADLData, 7)

理想情況下,這將返回tweets長度的向量,或者在本例中為 2,其中包含從tweets中的日期開始的過去 7 天內發生的ADLData中的每個事件的計數。 在這種情況下, c(2,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"))

您可以輕松地將其分配給另一個向量,然后該向量會說明它是否存在。

您可以在difftime的幫助下編寫countingfunction ,並使用outer計算兩個向量的每個值之間的時間差。

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

假設您有 class 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM