У меня есть такой тип данных:
Date Status ID
23-1-2010 11:40 in 321
23-1-2010 11:53 out 321
9-1-2010 12:11 in 356
9-1-2010 12:18 out 356
23-1-2010 11:37 in 356
23-1-2010 11:5 out 356
5-2-2010 13:14 in 398
5-2-2010 13:30 out 398
10-3-2010 9:30 in 398
13-3-2010 11:50 out 377
16-3-2010 10:30 in 377
16-3-2010 11:00 out 377
20-3-2010 12:09 in 377
20-3-2010 12:30 out 377
Данные описывают клиентов, которые посетили супермаркет в определенную дату и время. Клиенты идентифицируются по их идентификатору, а также указывается их статус.
Я хочу посчитать, сколько времени клиент провел в супермаркете в разные дни. Проблема с данными заключается в том, что для некоторых клиентов записывается только время входа или выхода. Я очистил клиентов, которые посетили один раз, и отсутствует статус входа или выхода, но у меня все еще есть некоторые из них, которые посетили более одного раза, а вход / выход отсутствует.
Я пробовал это
#create an empty data frame
TimeSpent<-rep(NA,length(df$ID))
ID<-rep(NA,length(df$ID))
Tspent<-data.frame(TimeSpent,ID)
#compute the time spent time
for(i in 1:length(df$Date - 1))
{
if(isTRUE(df$Status[i] == "in" && df$Status[i+1] == "out"))
{
Tspent$ID[i] <- df$ID[i]
Tspent$TimeSpent[i] <- difftime(df$Date[i+1] - df$Date[i])
} else if(isTRUE(df$Status[i+1] == "in" && df$Status[i+2] == "out"))
{
Tspent$ID[i] <- df$ID[i+1]
Tspent$TimeSpent[i] <- difftime(df$Date[i+2] - df$Date[i+1])
} else
{
Tspent$ID[i] <- df$ID[i+2]
Tspent$TimeSpent[i] <- difftime(df$Date[i+3] - df$Date[i+2])
}
i<-i+1
}
и я получаю эту ошибку:
Ошибка в as.POSIXct.default (time1):
не знаю, как преобразовать 'time1' в класс "POSIXct"
Кто-нибудь знает, как исправить мой код или альтернативное решение? Заранее спасибо!