我希望有人可以幫助解決這個問題 - 我一直在咀嚼它幾個小時!數據幀中的錯誤,更換有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。
我已經寫了一個基本循環在r中創建第五列,用於標識旅程階段是否已鏈接,即第二旅程鏈接到第一旅程,第三旅程鏈接到第二旅程(其中1 =已鏈接,0 =沒有鏈接),基於以下的條件:
的jnys是同一人,併發生在同一天
2巴士旅程/ 2電車jnys /一個公共汽車和電車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,「linked」,value = c(NA,1)): 替換有2行,數據有52231
當我在大約150行的測試數據集上運行這個時,我沒有得到這個錯誤信息。我知道它與鏈接列有關,但我不完全明白如何解決它。
心不是有什麼問題你大括號? – Acarbalacar
是的代碼中循環'for'的最後一個'}'丟失。 – timat
@JassiL:我的回答不起作用?你還在等別的東西? – timat