bde*_*vil 0 r dataframe tidyverse
假设我有一个看起来像这样的数据框:
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
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以为每种独特的药物创建列,所以我留下了这样的内容:
gene Naloxone_log2FC Asirin_Log2FC Haldol_log2FC
Ubb 0.6375514 0.73324 0.0375
Tuba1a ...
Scd1 ...
Thanks!
Run Code Online (Sandbox Code Playgroud)
您可以使用tidyr::spread()更新的tidyr::pivot_wider():
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
Run Code Online (Sandbox Code Playgroud)
由reprex软件包(v0.3.0)创建于2019-11-11