我有一张表(tbl
),如下所示:
ID VAL
foo sometext
bar anothertext
boo text
foor texttext
...
ID(vect
)的向量,tbl$ID
bar
foo
...
我需要创建新表(tbl
的子表),其中key仅来自vect
。我该如何执行此任务?
答案 0 :(得分:3)
对于键值对,有一些比B = all(bsxfun(@gt,A,thresh),2);
B(~B) = []
更好的选项。
首先,请确保您使用的是字符串,而不是因素:
data.frame
(1)使用键控data.table:
tbl[] <- lapply(tbl,as.character)
(2)使用命名向量:
require(data.table)
setkey(setDT(tbl),ID)
tbl[J(vect)]
# ID VAL
# 1: bar anothertext
# 2: foo sometext
(3)如果您想要哈希值,@JoshuaUlrich's answer here表示您可以使用tblvec <- setNames(tbl$VAL,tbl$ID)
tblvec[vect]
# bar foo
# "anothertext" "sometext"
。此外,还有environment
个包。
答案 1 :(得分:0)
tbl <- data.frame(ID=c('foo','bar','boo','foor'), VAL=c('sometext','anothertext','text','texttext') );
vect <- c('bar','foo');
tbl[tbl$ID%in%vect,];
## ID VAL
## 1 foo sometext
## 2 bar anothertext
另一种方法:
subset(tbl,ID%in%vect);
## ID VAL
## 1 foo sometext
## 2 bar anothertext
答案 2 :(得分:0)
只需使用子集功能,它将为您提供基于ID的数据tbl仅在vect中
subsets <- subset(tbl , ID %in% vect )
它将检查vect中的tbl $ ID,并为您提供仅用于这些ID的子表。