简体   繁体   English

R从数据框中提取不匹配的行

[英]R extract rows from data frame that do not match

I have two data frames (a and b, say) with similar rownames. 我有两个具有相似行名的数据帧(例如a和b)。 How can I extract the rows in data.frame a that do not exist in data.frame b ? 我怎样才能提取data.frame行a中不存在data.frame b

thanks, jd 谢谢,jd

a[!rownames(a)%in%rownames(b),]

How about this? 这个怎么样?

a <- data.frame(V1 = rnorm(10), V2 = rnorm(10))
row.names(a) <- paste("row", row.names(a))

> a
                V1          V2
row 1  -0.26695225 -1.72322854
row 2   0.17966753 -2.59861185
row 3   0.09679525 -0.18304155
row 4  -0.21904183 -0.67646542
row 5  -0.64441966 -0.58033626
row 6   0.28901284  0.01743280
row 7  -1.38555961  0.09184929
row 8  -0.60452736  0.08304690
row 9  -0.03898833  0.01075546
row 10 -0.21569958 -0.25948764

b <-data.frame(V1 = rnorm(5), V2 = rnorm(5))
row.names(b) <- paste("row", row.names(b))

> b
             V1         V2
row 1  1.412045 -0.6990107
row 2 -1.433099  0.8693957
row 3  1.061640  1.2938895
row 4 -1.715340 -0.6044137
row 5  1.131158 -0.3148006

a[setdiff(row.names(a), row.names(b)),]

> a[setdiff(row.names(a), row.names(b)),]
                V1          V2
row 6   0.28901284  0.01743280
row 7  -1.38555961  0.09184929
row 8  -0.60452736  0.08304690
row 9  -0.03898833  0.01075546
row 10 -0.21569958 -0.25948764

使用?setdiff ,如下所示:

a[ setdiff( rownames(a), rownames(b) ), ]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM