簡體   English   中英

從數據框中刪除其列值與另一個數據框的列值不匹配的數據 - R

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM