我有包含以下兩列的資料框
Tumor_Barcode SEX
MEL-JWCI-WGS-1 Male
MEL-JWCI-WGS-11 Male
MEL-JWCI-WGS-12 Female
MEL-JWCI-WGS-13 Male
我想將列重新編碼Tumor_Barcode為第三列Sample_ID,輸出應如下所示。
Tumor_Barcode Sex Sample_ID
MEL-JWCI-WGS-1 Male ME001
MEL-JWCI-WGS-11 Male ME011
MEL-JWCI-WGS-12 Female ME012
MEL-JWCI-WGS-13 Male ME013
無論如何我可以在R中做到這一點嗎?
資料:
Tumor_Barcode<-c(" MEL-JWCI-WGS-1","MEL-JWCI-WGS-11","MEL-JWCI-WGS-12","MEL-JWCI-WGS-13")
Sex<-c("Male", "Male", "Female", "Male")
DF1<-data.frame(Tumor_Barcode,Sex)
uj5u.com熱心網友回復:
這是一個基本的 R 方式。
Tumor_Barcode <- c(" MEL-JWCI-WGS-1","MEL-JWCI-WGS-11","MEL-JWCI-WGS-12","MEL-JWCI-WGS-13")
Sex <- c("Male", "Male", "Female", "Male")
DF1 <- data.frame(Tumor_Barcode,Sex)
num <- as.integer(sub("[^[:digit:]] ", "", DF1$Tumor_Barcode))
DF1$Sample_ID <- sprintf("MEd", num)
rm(num) # tidy up
DF1
#> Tumor_Barcode Sex Sample_ID
#> 1 MEL-JWCI-WGS-1 Male ME001
#> 2 MEL-JWCI-WGS-11 Male ME011
#> 3 MEL-JWCI-WGS-12 Female ME012
#> 4 MEL-JWCI-WGS-13 Male ME013
由reprex 包于 2022-03-11 創建(v2.0.1)
創建新列的兩行代碼可以變成一行:
DF1$Sample_ID <- sprintf("MEd", as.integer(sub("[^[:digit:]] ", "", DF1$Tumor_Barcode)))
DF1
#> Tumor_Barcode Sex Sample_ID
#> 1 MEL-JWCI-WGS-1 Male ME001
#> 2 MEL-JWCI-WGS-11 Male ME011
#> 3 MEL-JWCI-WGS-12 Female ME012
#> 4 MEL-JWCI-WGS-13 Male ME013
由reprex 包于 2022-03-11 創建(v2.0.1)
uj5u.com熱心網友回復:
我們可能會使用base R
DF1$Sample_ID <- with(DF1, sprintf('%sd',
substr(trimws(Tumor_Barcode), 1, 2),
as.integer(trimws(Tumor_Barcode, whitespace = "\\D "))))
-輸出
> DF1
Tumor_Barcode Sex Sample_ID
1 MEL-JWCI-WGS-1 Male ME001
2 MEL-JWCI-WGS-11 Male ME011
3 MEL-JWCI-WGS-12 Female ME012
4 MEL-JWCI-WGS-13 Male ME013
uj5u.com熱心網友回復:
一個可能的解決方案:
library(tidyverse)
DF1 %>%
mutate(Sample_ID = str_c("ME", str_extract(Tumor_Barcode, "\\d $") %>%
str_pad(3, pad = "0")))
#> Tumor_Barcode Sex Sample_ID
#> 1 MEL-JWCI-WGS-1 Male ME001
#> 2 MEL-JWCI-WGS-11 Male ME011
#> 3 MEL-JWCI-WGS-12 Female ME012
#> 4 MEL-JWCI-WGS-13 Male ME013
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/441261.html
上一篇:資料框在多行中分解串列列
