2016-01-06 25 views
-4

因此,基於一個連接ID的第二個數據集的所有意見,說我有兩個數據集:搶從數據集存在於%函數R使用%

d1<- data.frame(seq(1:10),rnorm(10)) 
colnames(d1) <- c('id','x1') 

d2<- data.frame(seq(3:7),rnorm(5)) 
colnames(d2) <- c('id','x2') 

現在,假設我想新數據集d3,即來自d1的數據,其值爲id,其也存在於d2中。我想使用一個非常簡單的功能,如:

d3 <- d1[id %in% d2$id] 

除了這是我打印一個錯誤。什麼是簡單的單線程來實現這一點?

+0

這麼多倒票!沒意見! – colin

+0

也許倒票的原因是這類問題肯定有這麼多答案。 – Gopala

+0

@ user3949008正在經歷他們,無法找到像我想要的那樣簡單易讀的代碼行。此外,上面發佈的修復程序似乎不起作用。顯然,需要在括號內部和外部指定'd1'。 – colin

回答

5

我們可以使用

subset(d1, id %in% d2$id) 

或者

d1[d1$id %in% d2$id,] 

不知道這是否簡化,但data.table的解決方案可能會更有效。

library(data.table) 
setDT(d1, key='id')[d2$id] 
+0

這第二行正是我正在尋找的。任何人在接下來的12分鐘內進一步簡化它都可以得到答案! – colin