【发布时间】:2014-09-03 16:51:47
【问题描述】:
我有两个具有相似行名的数据框(例如 a 和 b)。如何提取 data.frame a 中 data.frame b 中不存在的行?
谢谢, jd
【问题讨论】:
-
“相似”还是“相同”?
-
相同。对不起,我的语言不准确
标签: r matrix dataframe extraction
我有两个具有相似行名的数据框(例如 a 和 b)。如何提取 data.frame a 中 data.frame b 中不存在的行?
谢谢, jd
【问题讨论】:
标签: r matrix dataframe extraction
a[!rownames(a)%in%rownames(b),]
【讨论】:
这个怎么样?
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) ), ]
【讨论】: