使用行选择在R中对数据帧进行子集

时间:2014-02-09 20:10:37

标签: r dataframe subset

我有两个数据框。一个名为“发现”就像是

probeID         symbol  is.TF   entrezID
ILMN_1814092    AACSP1  FALSE   729522
ILMN_1668851    AADACL4 FALSE   343066
ILMN_1805104    ABAT    FALSE   18
ILMN_2070570    ABCA10  FALSE   10349
ILMN_2232084    ABCA11P FALSE   79963
ILMN_1704579    ABCA13  FALSE   154664
ILMN_1722286    ABCA5   FALSE   23461
ILMN_1701551    ABCA6   FALSE   23460
ILMN_1743205    ABCA7   FALSE   10347

另一个名为“值”的人就像

probeID         value   
ILMN_1814092    1.0 
ILMN_1668851    1.9 
ILMN_1805104    1.8 
ILMN_2070570    1.8 
ILMN_2232084    1.5 
ILMN_1704579    2.3 
ILMN_1722286    2.6 
ILMN_1701551    0.1 
ILMN_1743205    5.5 

两个数据帧在行“probeID”

方面重叠

如何从“发现”中选择“probeID”出现在“值”中?

overlap <- discovery[values$probeID,]

它为我提供了一个数据框,所有值都是 NA

2 个答案:

答案 0 :(得分:0)

如果您需要包含values列的数据集,merge是更好的方法。但是,如果您只需要获取显示discovery的{​​{1}}的子集。以下作品。

probeID

overlap <- discovery[discovery$probeID %in% values$probeID,] 运算符基于匹配,因此我只选择%in%匹配任何discovery$probeID

的行

答案 1 :(得分:0)

只需merge(discovery, values, by.x = "probeID", by.y = "probeID")

简要说明,请参阅http://stat.ethz.ch/R-manual/R-devel/library/base/html/merge.html

merge(x, y, by = intersect(names(x), names(y)),
     by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
     sort = TRUE, suffixes = c(".x",".y"),
     incomparables = NULL, ...)

合并xy,将两个数据框合并在一起。如果需要,您可以分别使用by.xby.y指定应合并两个数据帧的列。如果列名称在xy之间共享,则仅by=就足够了。如果未指定by=,则默认为names(x)names(y)的交集,或两个数据框之间共享的列。