Tarih Aralığındaki Gözlemleri Sayma R

Aug 16 2020

Bunun muhtemelen gerçekten basit bir çözümü var. İki veri setim var. Biri POSIXct tweet zaman damgalarının bir vektörü ve ikincisi POSIXct ADL HEAT Map zaman damgalarının bir vektörüdür.

Tarihleri ​​tweet vektöründen almamı ve her biri için ADL HEAT Map vektöründeki tweet'ten belirli bir aralıkta kalan zaman damgalarının sayısını saymama izin veren bir işlev oluşturmaya çalışıyorum.

Amacım, tweet vektörünü, ADL vektörünü, tweet vektöründen saymaya başlamak için gün sayısını ve tweet vektöründen saymayı durdurmak için gün sayısını koyabileceğim ve bir vektör döndürecek şekilde işlevi oluşturmaktır of tweet verileriyle aynı uzunlukta sayılır.

Çözümü burada zaten denedim ve işe yaramadı: R'deki tarih aralığındaki oluşum sayısını say

İşte yapmaya çalıştığım şeyin bir örneği. İşte kullandığım veri kümelerinin daha küçük bir versiyonu:

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")

Bir işlev oluşturmak istiyorum, onu countingfunctionilk veri kümesini, ikincisini girmeme ve geriye dönüp bakmak için birkaç günü aramama izin veren diyelim . Bu örnekte 7 günü seçtim:

countingfunction(tweets, ADLData, 7)

İdeal olarak bu, tweets2'nin uzunluğunun bir vektörünü veya bu durumda ADLData, içindeki tarihten itibaren son 7 gün içinde meydana gelen olayların her birinin sayımlarını içeren bir vektörü döndürür tweets. Bu durumda c(2,1).

Yanıtlar

YannikSuhre Aug 16 2020 at 21:12

Öyleyse, eğer sizi doğru anladıysam, bu tür verilere sahipsiniz:

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 = ""))

Ve yapmak istediğiniz şey, bir tweet'in ADL tarih aralığında olup olmadığını söylemektir. Bunu yaparak başarılabilir:

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

Bunu başka bir vektöre kolayca atayabilir ve daha sonra içinde olup olmadığını belirtir.

RonakShah Aug 20 2020 at 15:23

Sen yazabilir countingfunctionyardımıyla outerve kullanarak iki vektörlerin her değer arasındaki zaman farkını hesaplamak difftime.

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

Aşağıdaki POSIXctgibi sınıf vektörlerine sahip olduğunuzu varsayarsak :

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

Bunları şu şekilde geçirebilirsiniz:

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