-1

使用R我将如何改变我的表:

GeneID    GeneName    Species    Paralogues    Domains    Total
 1234      FGF1        Human         4            2         6
 5678      FGF1        Mouse         2            1         3
 9104      FGF1       Chicken        3            0         3

到代表总列的表,例如

GeneName    Human    Mouse    Chicken
  FGF1        6        3         3
4

2 回答 2

2

您可以使用dplyr::spread从长到宽重塑:

library(tidyverse);
df %>% 
    select(GeneName, Species, Total) %>% 
    spread(Species, Total)
#  GeneName Chicken Human Mouse
#1     FGF1       3     6     3

样本数据

df <- read.table(text =
    "GeneID    GeneName    Species    Paralogues    Domains    Total
 1234      FGF1        Human         4            2         6
 5678      FGF1        Mouse         2            1         3
 9104      FGF1       Chicken        3            0         3", header  = T)
于 2018-05-02T12:35:32.100 回答
0

您可以使用dcast()来自data.table.

对于输入:

text <- 
    "GeneID    GeneName    Species    Paralogues    Domains    Total
     1234      FGF1        Human         4            2         6
     5678      FGF1        Mouse         2            1         3
     9104      FGF1       Chicken        3            0         3"

my_data <- read.table(text = text, header = TRUE)

您可以使用GeneNameasLHSSpeciesas RHSwith转换数据value.var Total

data.table::dcast(my_data,
                  GeneName ~ Species, 
                  value.var = "Total")

结果:

  GeneName Chicken Human Mouse
1     FGF1       3     6     3
于 2018-05-02T12:39:11.090 回答