0
我有這樣的數據類型:如何在R的客戶超市中查找以下數據?
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
數據說明誰在一定的日期和時間走訪了超市的客戶。客戶通過他們的ID進行標識,並且他們的狀態也被指定。
我想計算客戶在不同日子在超市中所花費的時間。我對數據的問題是對於某些客戶只記錄入場時間或退出時間。我清除了曾經訪問過的客戶,無論是進入還是退出狀態,但我仍然有一些訪問過不止一次,並且缺失進/出的客戶。
我已經試過這
#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(時間1): 不知道如何轉換「時間1」上課「POSIXct」
有誰知道如何糾正我的代碼或其他解決方案?提前致謝!
謝謝您的回答勒布。我試過這個,但是我仍然得到相同的錯誤。我可以給你發一個csv文件。你能不能讓我知道該怎麼做? – Chris 2012-01-18 21:14:58
添加了我的樣本數據的代碼.... – Seb 2012-01-19 06:38:57
謝謝Seb。看來它現在正在工作。 – Chris 2012-01-19 08:49:01