我希望有人可以帮助解决这个问题 - 我一直在咀嚼它几个小时!数据帧中的错误,更换有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