根据另一个表过滤表

时间:2014-05-30 14:29:33

标签: r filter rstudio multiple-tables

其中一个包括所有感兴趣的道路的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&lt ;-(Data2,TMC == Data2 $ TMC)

但我得到的任何一件物品都找不到或者我的尺寸不匹配(Data1中有大约8000条记录,数据2中有大约14000000条记录,因为TMC上可以有多个旅行时间(TT),但是我这样做了。 m只对在与Data1中的列表对应的TMC上发生的那些感兴趣。我对MatLab非常熟悉,但不幸的是,目前我只提供R Studio,对此软件一无所知。这些表也作为cvs文件加载,如果这有任何区别。

1 个答案:

答案 0 :(得分: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)

This可能是关于子集性能的有用主题