我有两个数据帧eval(script)
和Full Table
,第一个有Dataset
Key_Identifier
和Accesion
列,而另一个只有我感兴趣的数据, Sequence
和Accesion
列。
在Sequence
中:
Full Table
和Key_Identifier Accesion Sequence
ARG1 AA001 AAACTGGG
ARG2 AA002 AAACTGGC
ARS2 AA003 AAACTGGG
ART1 AA004 AAACTGGA
ARG3 AA005 AAACTGCG
ART4 AA006 AAACTGGG
中的
Dataset
我要匹配{{1}中Accesion Sequence
AA001 ACTGGG
AA003 ACTGGG
AA005 ACTGCG
AA006 ACTGGG
中的Accesion
,并将其名称替换为Dataset
中的Full Table
,保持Key_Identifer
在{{ 1}}。喜欢:
Full Table
这是最好的方法吗?
答案 0 :(得分:0)
您可以使用merge合并两个数据帧。由于列名不同,因此by.x = 'key_identifier', by.y = 'accesion'
可以处理。
a <- data.frame('key_identifier' = c('AAA001', 'AAA003', 'AAA005'), 'accesion'= c('ARG1', 'ARG2', 'ARS2'), 'sequence' = c('AAACTGGG', 'AAACTGGC', 'AAACTGGG'))
b <- data.frame('accesion' = c('AAA001', 'AAA003', 'AAA005'), 'sequence' = c('ACTGGG', 'ACTGGG', 'ACTGCG'))
c <- merge(a, b, by.x = 'key_identifier', by.y = 'accesion')
key_identifier accesion sequence.x sequence.y
1 AAA001 ARG1 AAACTGGG ACTGGG
2 AAA003 ARG2 AAACTGGC ACTGGG
3 AAA005 ARS2 AAACTGGG ACTGCG
选择必要的列,
f <- c[,c(2,4)]
colnames(f) <- c('Accesion', 'Sequence')
Accesion Sequence
1 ARG1 ACTGGG
2 ARG2 ACTGGG
3 ARS2 ACTGCG
答案 1 :(得分:0)
dplyr / tidyverse对此非常有效,因为它对于新R用户来说非常直观。您可以使用select(-col_to_delete)
除去不需要的列,然后inner_join
除去仅存在匹配项的行。从那里开始,有一个简单的案例,即删除多余的列并根据需要重命名:
Full_Table %>%
select(-Sequence) %>%
inner_join(
Dataset,
by = "Accesion"
) %>%
select(-Accesion) %>%
rename(
Accesion = Key_Identifier
)
对于您的简单示例,我想以R为底的merge
就足够了,但是如果您要进行更复杂的转换,一定要研究dplyr。