私は、このようなデータの種類を持っている: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で エラー(TIME1): がクラスに '時間1' を変換する方法がわからない "POSIXct"
を誰かが自分のコードや代替ソリューションを修正する方法を知っていますか?前もって感謝します!
は、あなたの答えセブいただきありがとうございます。私はこれを試みたが、私はまだ同じエラーが発生します。私はあなたにcsvファイルを送ることができます。あなたは私にそのことを教えてもらえますか? – Chris
私のサンプルデータでコードを追加しました.... – Seb
Sebありがとうございます。それは今働いているようです。 – Chris