R 如何提取列中与其中一行具有相同值的所有行?
我有一个data.table,其中包含R 如何提取列中与其中一行具有相同值的所有行?,r,data.table,R,Data.table,我有一个data.table,其中包含名称和类。每个名称属于一个类。这是一个示例数据集 library(data.table) DT <- data.table(name = c("John","Smith","Jane","Ruby","Emerald","Jasmine","Tulip"), class = c(1,2,3)) %中的%是为了确保如果有不止一个叫约翰的人,我就能抓住他们。有没有更漂亮的方法,比如使用join 编辑:如果我知道确切的名字
名称
和类
。每个名称
属于一个类
。这是一个示例数据集
library(data.table)
DT <- data.table(name = c("John","Smith","Jane","Ruby","Emerald","Jasmine","Tulip"),
class = c(1,2,3))
%中的%是为了确保如果有不止一个叫约翰的人,我就能抓住他们。有没有更漂亮的方法,比如使用join
编辑:如果我知道确切的名字,而且只发生过一次,上面的内容将压缩为
DT[class == DT[name == "John", class], name]
我所寻找的是一种类似于“链接”的解决方案,在这种解决方案中,我可以消除嵌套,因为它看起来不雅观。正如@Frank所建议的,我所寻找的是
DT[.(class[name %like% "John"]), on=.(class), name]
此外,根据@RonakShah的回答,这是可行的
DT[class == class[name %like% "John"])]
我忘记了列表可以用这种方式编制索引。我不是一个data.table
人,但也许是这样DT[with(DT,class==class[name==“John”])]
您可以使用连接:DT[(class[name==“John”]),on=(class),name]
请参见?data.table
和上的渐晕图以了解详细信息。如果你的名字只有一个模式,那么就做name%像%patt
而不是name==“John”
谢谢你的回答@RonakShah,在data.table中,不需要带
的。
DT[class == class[name %like% "John"])]