R软件使用数组提取行的子集

时间:2015-02-02 12:33:42

标签: r matrix extraction

我有一组由相同列组成的三个矩阵

confasipri1  
confasipri2  
confasipri3  

其中一列名为ROW_NUM,我使用以下语句找到了ROW_NUM的常用值

metercomuni<-intersect (confasipri1[,"ROW_NUM"],confasipri2[,"ROW_NUM"])   

metercomuni<- intersect (metercomuni,confasipri3[,"ROW_NUM"])  

现在我的问题是从confasipri1,confasipri2,confasipri3中提取所有共同使用metercomuni的行。
例如,如果在metercomuni我有(1,3,5,8)
然后我必须创建一个新的矩阵(comuni1)从confasipri1中提取只有行

ROW_NUM = 1 
ROW_NUM = 3 
ROW_NUM = 5 
ROW_NUM = 8

和从confasipri2创建comuni2和从confasipri3创建comuni 3

confaspri1
row_num  datoA        datoB
1          p           f
2          c           a 
3          h           b
4          i           c
5          m           c

confasipri2
row_num  datoA        datoB
1          s           w
3          d           e
4          f           r
5          g           t

confasipri3
row_num  datoA        datoB
1          q           p
3          a           k
6          z           l
8          v           m

metercomuni  
1 3

我梦寐以求的结果是

comuni1 
    row_num  datoA        datoB
    1          p           f
    3          h           b

comuni2 
    row_num  datoA        datoB
    1          s           w
    3          d           e

comuni3
    row_num  datoA        datoB
    1          q           p
    3          a           k

1 个答案:

答案 0 :(得分:2)

试试这个:

 comuni1<-confasipri1[confasipri1[,"row_num"] %in% metercomuni,]

看起来你的数据可能是数据框而不是矩阵,所以你也可以这样做:

comuni1<-with(confasipri1,confasipri1[row_num %in% metercomuni,])