我正在努力通过使用另一个表替换一个数据帧中的所有名称。我想基于单独的表替换值。以下是我想要做的一个例子。
我的词典:
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代码
答案 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