我有两个数据框如下:
####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
答案 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