Я надеюсь, что кто-то может помочь с этой проблемой - я пережевывал ее в течение нескольких часов!Ошибка в фрейме данных, замена имеет xx, данные имеют xx
У меня есть фрейм данных под названием «» путешествия следующим образом, который показывает идентификатор клиента, даты их путешествия, режима и начало поездки времени:
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-м путешествием, третье путешествие, связанное со вторым путешествием (где 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, "linked", value = c (NA, 1)): замена имеет 2 строки, данные имеют 52231
Когда я запускал это на тестовом наборе данных около 150 строк, я не получил это сообщение об ошибке. Я знаю, что это связано с связанным столбцом, но я не совсем понимаю, как его разрешить.
Isnt там что-то не так с вашей фигурные скобки? – Acarbalacar
Да, последний '}' цикла 'for' на вашем коде отсутствует. – timat
@ JassiL: мой ответ не работает? вы ожидали чего-то еще? – timat