【问题标题】:R replace name element of df1 with name of other df2R用其他df2的名称替换df1的名称元素
【发布时间】:2020-08-03 19:39:59
【问题描述】:

我有 2 个数据框,它们呈现不同的 nrowdf1 nrow = 500df2 nrow = 30,但 df1$Taxa 中的所有元素都存在于 rownames(df2)

df1[1:5, ]

   Taxa  Env Correlation     Pvalue Type AdjPvalue Significance
1 C1414   pH -0.44448524 0.01570246    T 0.2774101             
2 C305   pH -0.03514715 0.80462576    V 0.8953632             
3 C6066 Temp -0.26652662 0.16223749    T 0.7098855             
4 C4483 Temp -0.24711638 0.07736761    V 0.7098855             
5 C1161   TS  0.04660032 0.81029772    T 0.8793111 

df2[1:5, ]

        Domain         Phylum
C1414 Bacteria Actinobacteria
C305  Bacteria  Bacteroidetes
C6066 Bacteria       Chlorobi
C4483 Bacteria  Fibrobacteres
C1161 Bacteria  Firmicutes

所以我想用 df2 的 Phylum 列替换 df1 中 Taxa 列的每个元素名称,例如:

df3:

             Taxa  Env Correlation     Pvalue    Type AdjPvalue Significance
1 Actinobacteria   pH    -0.44448524 0.01570246    T 0.2774101             
2 Bacteroidetes    pH    -0.03514715 0.80462576    V 0.8953632             
3 Chlorobi         Temp  -0.26652662 0.16223749    T 0.7098855             
4 Fibrobacteres    Temp  -0.24711638 0.07736761    V 0.7098855             
5 Firmicutes       TS     0.04660032 0.81029772    T 0.8793111

我试过cbind,但问题是df1 cbind(df1, df2)中的nrow

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    我们可以使用match

    df1$Taxa <- df2$Phylum[match(df1$Taxa, row.names(df2))]
    df1$Taxa
    #[1] "Actinobacteria" "Bacteroidetes"  "Chlorobi"       "Fibrobacteres"  "Firmicutes"    
    

    数据

    df1 <- structure(list(Taxa = c("C1414", "C305", "C6066", "C4483", "C1161"
    ), Env = c("pH", "pH", "Temp", "Temp", "TS"), Correlation = c(-0.44448524, 
    -0.03514715, -0.26652662, -0.24711638, 0.04660032), Pvalue = c(0.01570246, 
    0.80462576, 0.16223749, 0.07736761, 0.81029772), Type = c("T", 
    "V", "T", "V", "T"), AdjPvalueSignificance = c(0.2774101, 0.8953632, 
    0.7098855, 0.7098855, 0.8793111)), class = "data.frame", row.names = c("1", 
    "2", "3", "4", "5"))
    
    df2 <- structure(list(Domain = c("Bacteria", "Bacteria", "Bacteria", 
    "Bacteria", "Bacteria"), Phylum = c("Actinobacteria", "Bacteroidetes", 
    "Chlorobi", "Fibrobacteres", "Firmicutes")), class = "data.frame", 
    row.names = c("C1414", 
    "C305", "C6066", "C4483", "C1161"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-17
      • 2021-01-19
      • 1970-01-01
      • 2014-10-03
      • 2014-09-06
      • 1970-01-01
      • 2018-12-19
      • 2012-11-13
      相关资源
      最近更新 更多