Tarih Aralığındaki Gözlemleri Sayma R
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 countingfunction
ilk 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, tweets
2'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
Ö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.
Sen yazabilir countingfunction
yardımıyla outer
ve 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 POSIXct
gibi 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