[英]R: Extract Rows from One Data Frame, Based on Column Names Matching Values from Another Data Frame
[英]remove rows from data frame whose column values don't match another data frame's column values - R
所以我有兩個不同維度的數據框。
第一個,x,大約10,000行,長看起來像:
Year ID Number
2008.1 38573 1
2008.2 24395 3
(其間有很多數據)
2008.4 532 4
第二個,x2,長約80,000行,看起來像:
Year ID Number
2008.1 38573 2
2008.2 24395 3
(其間有很多數據)
2008.4 532 4
基本上,我想刪除滿足以下條件的第二個數據中的行:行中的Year,ID和Number值與第一個數據框的任何行都不匹配。 所以在上面的例子中,我將從第二個數據幀中刪除第1行,因為數字不匹配。
我試過了:
x2new <- x2[(x2$ID == x$ID && x2$Year==x$Year && x2$Number == x$Number),]
但它不起作用,因為兩個數據幀的長度不同。
我已經嘗試做一個雙循環來刪除沒有所有3個條件的行,但R根本不能做那么多的迭代。
請幫忙! 謝謝。
一個簡單的merge
merge(dat1,dat2)
以您的數據為例:
dat1 <- read.table(text='Year,ID,Number
2008.1,38573,1
2008.4,532,4
2008.2,24395,3',header=TRUE,sep=',')
dat2 <- read.table(text='Year,ID,Number
2008.1,38573,2
2008.4,532,4
2008.2,24395,3',header=TRUE,sep=',')
然后你得到:
merge(dat1,dat2)
Year ID Number
1 2008.2 24395 3
2 2008.4 532 4
我知道你要刪除第一個數據框中三列中沒有一列匹配的所有行,並保留至少一列匹配的所有行,對吧? 如果是這樣,那就這樣做:
newX2 <- x2[ x2$ID %in% x$ID | x2$Year %in% x$Year | x2$Number %in% x$Number,]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.