在R中获取行索引的rownames

时间:2016-04-07 14:21:14

标签: r

我有两个数据框如下:

####DATA A

AGT1 0.5 0.6
AGT2 0.4 0.3
AGT3 0.1 0.7
AGT4 0.2 0.1

#### DATA B

      row row2

 GCT1  1     2
 GCT2  2     2
 GCT3  3     1
 GCT4  4     2
 GCT5  5     4
 GCT6  6     4

我想通过索引到DATA A获取row2中行索引的名称并执行此操作

C=DATA A[DATA B$row2,]

但这给了我类似的东西

AGT2
AGT2.1
AGT1
AGT2.2
AGT4

还有其他更好的方法来编制非唯一行值,以避免.1,.2?

所以预期的输出看起来像这样:

数据B
      row row2

 GCT1  1     AGT2
 GCT2  2     AGT2
 GCT3  3     AGT1
 GCT4  4     AGT2
 GCT5  5     AGT4
 GCT6  6     AGT4

1 个答案:

答案 0 :(得分:0)

它像这样工作

C< -DATA A [DATA B $ row2,]

输出看起来像

AGT2   0.5 0.6
AGT2.1 0.5 0.6
AGT1   0.5 0.6
AGT2.2 0.5 0.6
AGT4   0.2 0.1

然后

DATA B$row2<-sapply(strsplit(rownames(C),"\\."), function(x) paste0(head(x,-1),collapse=".") )

最终输出是我们想要的

        row    row2

   GCT1  1     AGT2
   GCT2  2     AGT2
   GCT3  3     AGT1
   GCT4  4     AGT2
   GCT5  5     AGT4
   GCT6  6     AGT4