私はそのようなタイプのデータを持っています:
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 によって識別され、ステータスも指定されます。
顧客が異なる日にスーパーマーケットで過ごした時間を計算したいと考えています。私がデータに関して抱えている問題は、一部の顧客については、入場時間または退場時間のみが記録されることです。1 回訪問した顧客をクリアしましたが、in または out ステータスが欠落していますが、複数回訪問し、in/out が欠落している顧客がまだいくつかあります。
私はこれを試しました
#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" に変換する方法がわかりません
私のコードまたは代替ソリューションを修正する方法を知っている人はいますか? 前もって感謝します!