根据另一个列表替换数据框中的所有名称

时间:2016-10-03 17:34:42

标签: r

我正在努力通过使用另一个表替换一个数据帧中的所有名称。我想基于单独的表替换值。以下是我想要做的一个例子。

我的词典:

dic.txt:

======

human    AATC,AGGTA,ATTCAT
mouse    TTTT,CCCC
dog      ATGGG,TTTTAA

dic <- read.table("dic.txt",header=F)

和table.txt一样:

mouse   human
dog     mouse

dic <- read.table("dic.txt",header=F)

我想将表中的值替换为dic.txt

中的相应值
TTTT,CCCC   AATC,AGGTA,ATTCAT
ATGGG,TTTTAA     TTTT,CCCC

我可以在perl或python中完成它,但我必须在R程序中将其作为一个od代码

2 个答案:

答案 0 :(得分:2)

我们可以使用System -> Configuration -> Design,将match()的第一列与不公开的dic相匹配。然后我们使用生成的整数值从table的第二列中提取所需的值。

dic

提供更新后的table[] <- dic$V2[match(unlist(table), dic$V1)]

table

数据:

table
#             V1                V2
# 1    TTTT,CCCC AATC,AGGTA,ATTCAT
# 2 ATGGG,TTTTAA         TTTT,CCCC

答案 1 :(得分:0)

试试这个(带有两个输入数据帧dic&amp; tbl):

names(dic) <- c('species', 'dna')
names(tbl) <- c('species1', 'species2')

dic
  species               dna
1   human AATC,AGGTA,ATTCAT
2   mouse         TTTT,CCCC
3     dog      ATGGG,TTTTAA

tbl
  species1 species2
1    mouse    human
2      dog    mouse

merge(merge(dic, tbl, by.x='species', by.y='species1'), 
            dic, by.x='species2', by.y='species')[3:4]

     dna.x             dna.y
1    TTTT,CCCC AATC,AGGTA,ATTCAT
2 ATGGG,TTTTAA         TTTT,CCCC