通过R中的向量或键获得的子表

时间:2015-05-20 16:04:37

标签: r

我有一张表(tbl),如下所示:

ID    VAL
foo   sometext
bar   anothertext
boo   text
foor  texttext   
...

ID(vect)的向量,tbl$ID

的子向量
bar
foo
...

我需要创建新表(tbl的子表),其中key仅来自vect。我该如何执行此任务?

3 个答案:

答案 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的子表。