날짜 범위 R 내의 관측 값 계산
이것은 아마도 정말 간단한 해결책을 가지고있을 것입니다. 두 개의 데이터 세트가 있습니다. 하나는 POSIXct 트윗 타임 스탬프의 벡터이고 두 번째는 POSIXct ADL HEAT Map 타임 스탬프의 벡터입니다.
트윗 벡터에서 날짜를 가져와 각각에 대해 트윗에서 지정된 범위에 속하는 ADL HEAT Map 벡터의 타임 스탬프 수를 계산할 수있는 함수를 구축하려고합니다.
내 목표는 트윗 벡터, ADL 벡터, 트윗 벡터에서 계산을 시작하는 일 수, 트윗 벡터에서 계산을 중지하는 일 수를 입력하고 벡터를 반환 할 수있는 함수를 구축하는 것입니다. of는 트윗 데이터와 같은 길이입니다.
나는 이미 여기에서 해결책을 시도했지만 작동하지 않았습니다 .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)
이상적으로 이것은 의 날짜로부터 지난 7 일 이내에 발생한 tweets
이벤트 수 각각에 대한 개수가있는 2 또는 길이의 벡터를 반환합니다 . 이 경우 .ADLData
tweets
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"))
이것을 다른 벡터에 쉽게 할당 할 수 있습니다. 그러면 그것이 있는지 여부를 나타냅니다.
당신은 쓸 수 countingfunction
의 도움 outer
과 사용하여 두 벡터의 모든 값 사이의 시간 차이를 계산 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