首页 > 解决方案 > 根据列标准以编程方式从 Data.table 中选择行

问题描述

我有一个关于如何data.table根据列中的值以编程方式选择行的问题。

假设我有以下 Data.table

library(data.table)
DT <- data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)

现在我想选择行y = 3 and v = 2

通常我可以使用下面的代码

> DT[y==3& v==2]
   x y v
1: a 3 2

但在我的情况下,这样的选择标准本身就是一个变量,并且放在一个不同的DF

> DF = data.frame('1' = c('y', 'v'), '2' = c(3,2)); DF
  X1 X2
1  y  3
2  v  2

在这种情况下,X2上面的值会改变,偶数行也是可变的(即假设我有一个更大DT的列,一些额外的行DF可能会基于 的生成条件DF

有什么方法可以用来DFDT编程方式选择行吗?

标签: rdata.table

解决方案


另一个选项使用join

DT[structure(as.list(DF$X2), names=DF$X1), on=as.character(DF$X1)]

推荐阅读