我有一个带有 2.7 million observations 和 21 variables 的data.table,需要生成一个新的data.table,其中 Variable 1 与 vector of values 匹配 .
我有一些值的向量与一些Variable1值匹配,如下所示
VectorValue= (A, B, XXZ, UDD...)
我想的是:
Table_B <- Table_A[Table_A$Variable1 == VectorValue]
要么
Table_B <- Table_A[Variable1 == VectorValue]
但我得到这个错误:
当i是data.table(或字符向量)时,必须使用'on ='参数(请参阅?data.table)或通过键入x(即排序,并标记为已排序,看?setkey) . 由于x在RAM中排序,因此键控连接可能会对非常大的数据产生进一步的速度优势 .
1 回答
我在这里看到两个选项:
VectorValue
与Table_A$Variable1
的长度相同,并且您希望比较相同位置的值并返回这些值相等的数据帧的子集 . 在这种情况下,您可能只需添加一个这样的逗号...Table_B <- Table_A[Table_A$Variable1 == VectorValue, ]
...表示您希望条件为
TRUE
的所有行和Table_A
中的所有列 .Table_A
的任何行,其中Table_A$Variable1
的值与VectorValue
中的任何值匹配 . 在这种情况下,您需要使用%in%
运算符而不是==
,如此...Table_B <- Table_A[Table_A$Variable1 %in% VectorValue, ]