【问题标题】:Create a new Data.table from another one and match a vector list on one variable从另一个创建一个新的 Data.table 并匹配一个变量上的向量列表
【发布时间】:2018-03-28 15:08:15
【问题描述】:

我有一个包含 270 万次观察21 个变量 的 data.table,需要生成一个新的 data.table,其中 Variable 1匹配一个值向量

我有与一些 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 中排序,因此键控连接可能会进一步提高处理非常大数据的速度。

【问题讨论】:

  • 你可能想制作一个可重复的例子stackoverflow.com/questions/5963269/…无论如何,你的例子太简单了,我无法理解。
  • 你能用dput(head(Table_A))给我们看看数据结构吗?

标签: r data.table subset


【解决方案1】:

我在这里看到两个选项:

  1. VectorValueTable_A$Variable1 的长度相同,您希望比较相同位置的值并返回这些值相等的数据帧子集。在这种情况下,您可能只需要像这样添加一个逗号...

Table_B &lt;- Table_A[Table_A$Variable1 == VectorValue, ]

...表示您想要条件为TRUE 的所有 以及Table_A 中的所有列。

  1. 您想要返回Table_A 的任何行,其中Table_A$Variable1 的值与VectorValue 中的任何 值匹配。在这种情况下,您需要使用%in% 运算符而不是==,就像这样...

Table_B &lt;- Table_A[Table_A$Variable1 %in% VectorValue, ]

【讨论】:

  • 谢谢 Keith,第二个选项似乎不错,因为 VectorValue 的长度不同。
猜你喜欢
  • 2021-11-20
  • 2013-09-14
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 2018-03-17
  • 2012-03-13
  • 2018-05-05
  • 1970-01-01
相关资源
最近更新 更多