【问题标题】:How can I use R to change my table [duplicate]如何使用 R 更改我的表 [重复]
【发布时间】:2018-05-02 12:19:31
【问题描述】:

使用 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

【问题讨论】:

  • 到目前为止你有什么尝试?
  • @Sathish 这不会重现 OP 的预期输出;你自己试过吗?
  • @MauritsEvers 可能是这个dcast(df, GeneName ~ Species, value.var = 'Total')

标签: r dataframe biomart


【解决方案1】:

你可以使用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)

【讨论】:

  • 不需要group_by。
  • @zx8754 好点,谢谢。固定。
【解决方案2】:

您可以从data.table 使用dcast()

对于输入:

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)

您可以使用GeneName 将数据转换为LHS,将Species 转换为RHSvalue.var Total

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

结果:

  GeneName Chicken Human Mouse
1     FGF1       3     6     3

【讨论】:

    猜你喜欢
    • 2022-12-05
    • 2011-07-18
    • 2019-06-30
    • 1970-01-01
    • 2018-10-24
    • 2014-06-18
    • 1970-01-01
    • 2019-10-21
    • 2015-05-10
    相关资源
    最近更新 更多