1

亲爱的stackoverflow专家,

我有两张桌子

table1<-read.table("table1.txt",header=TRUE)
table2<-read.table("table2.txt",header=TRUE)

我想从表 1 中选择与表 2 第一列的值匹配的所有值。我尝试了 sqldf,但我不确定语法,

selection<-sqldf("SELECT *, column1 from table1 WHERE column1 like column2 from table2")

有什么建议吗?

4

3 回答 3

3

左连接是您所追求的。

 selection <- sqldf('select * from table1 LEFT JOIN table2 ON table1.column1 = table2.column1')

或者你可以使用merge

merged <- merge(table1, table2, by = 'column1')
于 2012-12-19T00:37:56.217 回答
1

这是从没有sqldftable1的第一列的匹配值中选择所有值的解决方案:table2

table1[table1 %in% table2[,1]]

我不确定这是否是您的意思,但这就是您的问题对我的暗示。如果要从中选择与 的相应行table1值匹配的值,请使用table2

table1[table1 == table2[,1]]

如果您只想考虑来自 的单列table1,请使用类似

table1[table1[,1] %in% table2[,1], 1]
于 2012-12-19T00:35:58.037 回答
1

您可以尝试以下方法:

 table1[sapply(table1, function(x) x %in% table2[, 1, drop=FALSE])]

这里发生的是该sapply语句返回一个逻辑列表,指示 的哪些元素table1table2的第一列中。然后我们使用该逻辑向量来索引table1

  # to see this more clearly, try the following line, 
  # which is what is being used to index table1
  sapply(table1, function(x) x %in% table2[, 1, drop=FALSE])
于 2012-12-19T00:21:16.247 回答