我有以下两列的dataframe
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)发布于 2022-03-11 15:29:29
一种可能的解决办法:
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发布于 2022-03-11 15:34:00
我们可以使用base R
DF1$Sample_ID <- with(DF1, sprintf('%s%03d',
substr(trimws(Tumor_Barcode), 1, 2),
as.integer(trimws(Tumor_Barcode, whitespace = "\\D+"))))-output
> 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 ME013https://stackoverflow.com/questions/71440793
复制相似问题