首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据第一列中的值合并两个表

根据第一列中的值合并两个表
EN

Unix & Linux用户
提问于 2018-06-28 13:49:28
回答 1查看 390关注 0票数 1

我有一个这样的桌子(csv文件):

代码语言:javascript
复制
         p1 p10 p16 p19 p25 p3  p5  p6  p8  p9
con1    567 0   3   0   18  17  8   4   6   7
con3    490 7   6   2   23  26  20  14  12  29
con4    737 1   4   1   6   4   1   4   8   5
con5    145 6   4   0   11  17  5   9   22  11
con10   68  0   0   34  4   0   0   0   0   0
con30   46  0   0   8   0   0   0   0   0   0
con2    72  0   0   8   0   1   0   0   0   0

和第二个表(csv文件):

代码语言:javascript
复制
name    superkingdom    phylum  class   order   family  genus   species
con1    Viruses                                    Pox  Alphaen     Ano
con30   Viruses                           Her     Allo      Bat     Ran
con4    Viruses                                                     Hud
con5    Viruses                                    Mimi     Cafe    Caf
con10   Viruses                                                     Hud
con2    Viruses                          Pico    Picorn    Entero   En
con3    Viruses                                            Phyco    Chloro  

我希望从第二个表中将所有基于第一列中相同值的内容复制到第一个表列(2:8)。

示例输出

代码语言:javascript
复制
            p1  p10 p16 p19 p25 p3  p5  p6  p8  p9  superkingdom    phylum  class   order   family  genus   species
    con1    567 0   3   0   18  17  8   4   6   7   Viruses                                    Pox  Alphaen Ano
    con3    490 7   6   2   23  26  20  14  12  29  Viruses                                            Phyco    Chloro  
    con4    737 1   4   1   6   4   1   4   8   5   Viruses                     Hud
    con5    145 6   4   0   11  17  5   9   22  11  Viruses                                    Mimi Cafe    Caf
    con10   68  0   0   34  4   0   0   0   0   0   Viruses                     Hud
    con30   46  0   0   8   0   0   0   0   0   0   Viruses         Her Allo    Bat Ran
    con2    72  0   0   8   0   1   0   0   0   0   Viruses         Pico    Picorn  Entero  En
EN

回答 1

Unix & Linux用户

发布于 2018-06-29 08:21:59

在基本R中,使用merge (package base):

代码语言:javascript
复制
df1 <- read.csv(text="p1,p10,p16,p19,p25,p3,p5,p6,p8,p9
con1,567,0,3,0,18,17,8,4,6,7
con3,490,7,6,2,23,26,20,14,12,29
con4,737,1,4,1,6,4,1,4,8,5
con5,145,6,4,0,11,17,5,9,22,11
con10,68,0,0,34,4,0,0,0,0,0
con30,46,0,0,8,0,0,0,0,0,0
con2,72,0,0,8,0,1,0,0,0,0")

df2 <- read.csv(text="name,superkingdom,phylum,class,order,family,genus,species
con1,Viruses,,,,Pox,Alphaen,Ano
con30,Viruses,,,Her,Allo,Bat,Ran
con4,Viruses,,,,,,Hud
con5,Viruses,,,,Mimi,Cafe,Caf
con10,Viruses,,,,,,Hud
con2,Viruses,,,Pico,Picorn,Entero,En
con3,Viruses,,,,,Phyco,Chloro")

# by.x=0 joins df1 by rownames
merge(df1, df2, by.x=0, by.y="name")
#   Row.names  p1 p10 p16 p19 p25 p3 p5 p6 p8 p9 superkingdom phylum class order family   genus species
# 1      con1 567   0   3   0  18 17  8  4  6  7      Viruses     NA    NA          Pox Alphaen     Ano
# 2     con10  68   0   0  34   4  0  0  0  0  0      Viruses     NA    NA                          Hud
# 3      con2  72   0   0   8   0  1  0  0  0  0      Viruses     NA    NA  Pico Picorn  Entero      En
# 4      con3 490   7   6   2  23 26 20 14 12 29      Viruses     NA    NA                Phyco  Chloro
# 5     con30  46   0   0   8   0  0  0  0  0  0      Viruses     NA    NA   Her   Allo     Bat     Ran
# 6      con4 737   1   4   1   6  4  1  4  8  5      Viruses     NA    NA                          Hud
# 7      con5 145   6   4   0  11 17  5  9 22 11      Viruses     NA    NA         Mimi    Cafe     Caf
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/452441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档