[英]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.