Я пытаюсь перебрать имеющийся у меня набор данных файла журнала, чтобы добавить переменную, в которой хранится номер сеанса сервера для каждого наблюдения.Для первой строки я хочу создать новую переменную 'номер сеанса' со значением 1. После этого я хочу другой номер сеанса для следующей строки, если 'ResearchNumber' отличается от строки ранее.Если это тот же «ResearchNumber», я хочу проверить, больше ли разница в переменной Posixct, чем 18000 секунд (или 30 минут).Если это так, я хочу создать другой номер сеанса (увеличив его на 1).Во всех остальных случаях я хочу, чтобы номер сеанса был таким же, как и в предыдущей строке.Подводя итог, я хочу создать номера сессий, основанные на бездействии более 30 минут для каждого участника.
Я пробовал несколько вещей, но мой код, кажется, не зацикливается на всех строках, и с другими решениями разница во времени вычисляется неправильно.
Я надеюсь, что кто-то может помочь мне решить эту проблему.Вся помощь приветствуется!
# create example data
ResearchNumber <- c("AL001","AL002","AL003")
DateTimeTag <- c(
as.POSIXct('2014-09-29 10:35:40', tz='GMT'),
as.POSIXct('2014-09-29 10:35:42', tz='GMT'),
as.POSIXct('2014-09-29 10:38:18', tz='GMT')
)
logdata <- data.frame(ResearchNumber, DateTimeTag)
# loop through logdata to add variable to every observation with a server session number
linecount <- 1
for (lines in logdata) {
if (linecount == 1) {
session_number <- 1
logdata$session_number <- session_number
datetime <- logdata$DateTimeTag
participantbefore <- logdata$ResearchNumber
linecount <- (linecount + 1)
}
else if (linecount > 1) {
difference <- (logdata$DateTimeTag - datetime)
if (logdata$ResearchNumber != participantbefore) {
logdata$session_number <- (session_number + 1)
participantbefore <- logdata$ResearchNumber
session_number <- (session_number + 1)
datetime <- logdata$DateTimeTag
}
else if (difference > 18000) {
logdata$session_number <- (session_number + 1)
participantbefore <- logdata$ResearchNumber
session_number <- (session_number + 1)
datetime <- logdata$DateTimeTag
}
else {
logdata$session_number <- (session_number)
participantbefore <- logdata$ResearchNumber
datetime <- logdata$DateTimeTag
}
}
}