誰かがこの問題を助けてくれることを願っています - 私は数時間それを噛んできました!データフレームにエラーがあり、交換にxxがあり、データにxxがある
私は、旅行、モードと旅の開始時間のその日、顧客IDを示しており、以下のように「旅」と呼ばれるデータフレームがあります。
ID | Date | Mode | Time
------ | --------- | ------- | -----
1234 | 12/10/16 | Bus | 120
1234 | 12/10/16 | Bus | 130
1234 | 12/10/16 | Bus | 290
1234 | 12/10/16 | Train | 310
1234 | 12/10/16 | Bus | 330
4567 | 12/10/16 | Bus | 220
4567 | 12/10/16 | Tram | 230
4567 | 13/10/16 | Bus | 290
4567 | 13/10/16 | Bus | 450
4567 | 14/10/16 | Train | 1000
ので、12月10日には、顧客1234が4台のバスを作りましたjnysと1列車jny。
私は、旅程がリンクされているかどうかを識別する5番目の列を作成するために基本ループを書いています。すなわち、2番目の旅にリンクした2番目の旅、2番目の旅にリンクした3番目の旅(1 =リンク、0 =以下の条件に基づいて、)リンクされていない:
jnysが同じ人のためのものと同じ日に行わ
2バスの旅/ 2トラムjnys /バス、トラムjny /トラムとバスjnyはお互いに60分以内です(バスと列車は60分以内に結ばれません)。コードは以下の通りである:
df <- read.table("Journeys.txt", header=TRUE, sep=",") for (i in 2:dim(df)[1]) { if ((df$ID[i]==df$ID[i-1]) & (df$Date[i]==df$Date[i-1]) & ((df$Mode[i]=='Bus' & df$Mode[i-1]=='Bus')| (df$Mode[i]=='Bus' & df$Mode[i-1]=='Tram')| (df$Mode[i]=='Tram' & df$Mode[i-1]=='Bus')| (df$Mode[i]=='Tram' & df$Mode[i-1]=='Tram')) & (df$Time[i]-df$Time[i-1]<60)) {df$linked[i] <- 1} else {df$linked[i] <- 0}
これは私に次のような出力が得られます:
:ID | Date | Mode | Time | Linked
------ | --------- | ------- | ----- | -----
1234 | 12/10/16 | Bus | 120 | 0
1234 | 12/10/16 | Bus | 130 | 1
1234 | 12/10/16 | Bus | 290 | 0
1234 | 12/10/16 | Train | 310 | 0
1234 | 12/10/16 | Bus | 330 | 0
4567 | 12/10/16 | Bus | 220 | 0
4567 | 12/10/16 | Tram | 230 | 1
4567 | 13/10/16 | Bus | 290 | 0
4567 | 13/10/16 | Bus | 450 | 0
4567 | 14/10/16 | Train | 1000 | 0
私はこれを実行しようとするとしかし、私は次のエラーメッセージを取得しておきます
$ <のエラー-data.frame(tmp、リンク済み、値= c(NA、1)): 置換行が2行あり、データが52231
これを約150行のテストデータセットで実行したとき、このエラーメッセージは表示されませんでした。私はそれがリンクされた列に関連していることを知っていますが、私はそれを解決する方法を完全に理解していません。
あなたの中括弧と間違って何かがイマイチ? – Acarbalacar
はいコードの 'for'ループの最後の'} 'がありません。 – timat
@JassiL:私の答えはうまくいきませんか?あなたは別の何かを期待していたのですか? – timat