基于另一个表筛选表格

3

其中一个表格包含了所有感兴趣道路的TMC编号。第二个表格则包含了特定州中每一条道路的通行时间。我希望使用第一个表格进行筛选,以便只保留与感兴趣道路相对应的记录。

df

  id     link       tmc
1  1 23402444 122P06466
2  2 23402487 122P06476
3  3 23402488 122N06476
4  4 23402493 122N06477
5  5 23402555 122P06454
6  6 23402557 122N06453

df2

  id       tmc   epoch  tt
1  1 108N04625 1182014 163
2  2 108N04625 1182014 103
3  3 108N04625 1182014  73
4  4 108N04625 1172014 254
5  5 108N04625 1172014 224

我尝试使用一个筛选器

Data2Filter<-(Data2, TMC==Data2$TMC)

但我得到了“找不到对象”的提示,或者提示我的维度不匹配(Data1中有大约8000条记录,而Data2中有14000000条记录,因为一个TMC上可能会有多个旅行时间(TT),但我只对那些与Data1列表相对应的TMC发生的时间感兴趣)。我非常熟悉MatLab,但很遗憾,目前我只能使用R Studio,并且对这个软件一无所知。另外,这些表格是作为csv文件加载的,如果有什么区别请告诉我。


你的示例中没有TMC匹配... - Paulo E. Cardoso
1个回答

3
df2$tmc[1] <- df$tmc[1]
df2

  id       tmc   epoch  tt
1  1 122P06466 1182014 163
2  2 108N04625 1182014 103
3  3 108N04625 1182014  73
4  4 108N04625 1172014 254
5  5 108N04625 1172014 224

许多许多选项。
subset(df2, tmc %in% df$tmc)

df2[df2$tmc %in% df$tmc, ]

library(dplyr)
fi <- filter(df2, tmc %in% df$tmc)

fi
  id       tmc   epoch  tt
1  1 122P06466 1182014 163

应对大型数据集的超高速处理

library(data.table)
dt <- data.table(df)
dt2 <- data.table(df2)
subset(dt2, tmc %in% dt$tmc)

这可能是关于子集性能的一个有用话题。

这里 可能会有一些帮助。


我使用了subset(df2, tmc %in% df$tmc)这个函数,它正好符合我的需求,但是它删除了我仍然需要的TMC列。有什么解决方法吗? - mgc77
很高兴知道它对你有用。祝一切顺利。 - Paulo E. Cardoso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接