Join 基于字段中具有冗余/缺少值的字段联接文件

Join 基于字段中具有冗余/缺少值的字段联接文件,join,field,Join,Field,我有两个以制表符分隔的文本文件,我希望基于某个字段(例如field1)进行连接。在其中一个文件中,该字段存在冗余,例如: field1 field2 field3 A gene1 0.01 A gene2 0.001 A gene3 0.02 B gene4 0.01 B gene5 0.03 C gene6 0.004 另一方面,没有冗余: field1 name pathway A A_name A_pathway B

我有两个以制表符分隔的文本文件,我希望基于某个字段(例如field1)进行连接。在其中一个文件中,该字段存在冗余,例如:

field1  field2  field3
A   gene1   0.01
A   gene2   0.001
A   gene3   0.02
B   gene4   0.01
B   gene5   0.03
C   gene6   0.004
另一方面,没有冗余:

field1  name    pathway
A   A_name  A_pathway
B   B_name  B_pathway
C   C_name  C_pathway
D   D_name  D_pathway
E   E_name  E pathway
第二个文件还包含要联接的字段中第一个文件中不存在的值。是否可以使用join命令连接这些文件,从而生成以下文件:

field1  field2  field3  name    pathway
A   gene1   0.01    A_name  A_pathway
A   gene2   0.001   A_name  A_pathway
A   gene3   0.02    A_name  A_pathway
B   gene4   0.01    B_name  B_pathway
B   gene5   0.03    B_name  B_pathway
C   gene6   0.004   C_name  C_pathway

我试着查看一下join的手册页并进行了一些尝试,但似乎无法使其正常工作。

由于您对SQLite有一定的了解,因此使用此SQL工具来处理您的问题可能是最有意义的。首先,使用以下命令将两个CSV文件导入SQLite:

sqlite> create table table1 (field1 text, field2 text, field3 real);
sqlite> .separator "\t"
sqlite> .import table1.csv table1
并对第二个表执行相同的操作:

sqlite> create table table2 (field1 text, name text, pathway text);
sqlite> .separator "\t"
sqlite> .import table2.csv table2
现在数据已在SQLite中,您可以执行以下简单连接以获得所需的结果集:

SELECT t1.field1,
       t1.field2,
       t1.field3,
       t2.name,
       t2.pathway
FROM table1 t1
INNER JOIN table2 t2
    ON t1.field1 = t2.field1

您有权访问SQL数据库吗?R怎么样?使用这两种工具中的任何一种都很容易处理。我对SQLite有一些经验。我可以用它来连接表吗?