2017-06-14 165 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