【问题标题】:Splitting dataframe column into multiple columns [duplicate]将数据框列拆分为多列[重复]
【发布时间】:2019-11-11 21:55:50
【问题描述】:

假设我有一个如下所示的数据框:

gene    drug    log2FC
Ubb    Naloxone    0.6375514
Tuba1a   Naloxone    0.5827224
Scd1    Naloxone    -0.7249997
Ubb    Aspirin    0.8000
Tuba1a    Aspirin  0.73324
Scd1    Aspirin    0.2497
Ubb    Haldol    0.0375
Tuba1a    Haldol    0.25824
Scd1    Haldol    -0.0249997

是否有一种简单的方法可以为每种独特的药物创建列,所以我只剩下这样的东西:

gene    Naloxone_log2FC    Asirin_Log2FC    Haldol_log2FC
Ubb     0.6375514    0.73324    0.0375
Tuba1a  ...
Scd1    ...

Thanks!

【问题讨论】:

标签: r dataframe tidyverse


【解决方案1】:

您可以使用较新的tidyr::pivot_wider() 中的tidyr::spread()

library(tidyr)

data <- read.table(h=T, strin=F, text="gene    drug    log2FC
Ubb    Naloxone    0.6375514
Tuba1a   Naloxone    0.5827224
Scd1    Naloxone    -0.7249997
Ubb    Aspirin    0.8000
Tuba1a    Aspirin  0.73324
Scd1    Aspirin    0.2497
Ubb    Haldol    0.0375
Tuba1a    Haldol    0.25824
Scd1    Haldol    -0.0249997")

data %>% spread(drug, log2FC)
#>     gene Aspirin     Haldol   Naloxone
#> 1   Scd1 0.24970 -0.0249997 -0.7249997
#> 2 Tuba1a 0.73324  0.2582400  0.5827224
#> 3    Ubb 0.80000  0.0375000  0.6375514

data %>% pivot_wider(names_from = "drug", values_from = log2FC)
#> # A tibble: 3 x 4
#>   gene   Naloxone Aspirin  Haldol
#>   <chr>     <dbl>   <dbl>   <dbl>
#> 1 Ubb       0.638   0.8    0.0375
#> 2 Tuba1a    0.583   0.733  0.258 
#> 3 Scd1     -0.725   0.250 -0.0250

reprex package (v0.3.0) 于 2019 年 11 月 11 日创建

【讨论】:

  • 嗯有没有办法将列名修改为 OP 的预期输出的样子? (即Naloxone_log2FC 等等。)我快速浏览了pivot() 小插图,虽然我看到添加前缀是可能的,但似乎没有任何关于能够添加后缀的事情。跨度>
  • 事实上,默认情况下这是不可能的,但只需在管道链的末尾使用%&gt;% rename_at(-1, paste0, "_log2FC"),你就会得到你的后缀:)
【解决方案2】:

你可以使用tidyr包的spread函数(我假设你的数据框是df):

library("tidyr")

df = spread(df, drug, log2FC)

要将“_log2FC”附加到您可以使用的列名:

for (i in 2:length(colnames(df))) {
  colnames(df)[i] = paste0(colnames(df)[i], "_log2FC")
}

【讨论】:

    猜你喜欢
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 2018-07-26
    • 2017-03-29
    • 2013-08-04
    相关资源
    最近更新 更多