2017-06-14 124 views
0

说我有象以下R:基于矢量子集的行

A B 
PHX 5 
DEN 3 
DAL 1 
HOU 2 

df = data.frame(A = c("PHX", "DEN", "DAL", "HOU"), 
       B = c(5, 3, 1, 2)) 

数据帧然后我有如下所示

sel = c("PHX", "DAL", "PHX", "PHX") 

然后我想子集DF到向量在与sel进行子集化后得到B的值。我的结果应该是这样的载体:

res = c(5, 1, 5, 5) 

我应该使用什么样的操作与==为载体不会工作,要做到这一点的子集。

我可以使用dplyrvanilla R

回答

1

尝试match在基础R:

with(df, B[match(sel, A)]) 

#[1] 5 1 5 5 
+0

@dandroid:我想指出的是,重复值将不以'匹配(SEL,A)'报告。例如,对于df = data.frame(A = c(“PHX”,“DEN”,“DAL”,“HOU”,“PHX”),B = c(5,3,1,2,6 ))',你仍然会得到'5 1 5 5'而不是'5 1 5 5 6'。这是'连接'的一个优点,我认为这是作为重复文章中的一个示例提供的。 – CPak