首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对R中现有列的重新编码

对R中现有列的重新编码
EN

Stack Overflow用户
提问于 2022-03-11 15:21:54
回答 2查看 46关注 0票数 5

我有以下两列的dataframe

代码语言:javascript
复制
      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,输出如下。

代码语言:javascript
复制
     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区能做到吗?

数据:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-11 15:29:29

一种可能的解决办法:

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2022-03-11 15:34:00

我们可以使用base R

代码语言:javascript
复制
DF1$Sample_ID <- with(DF1, sprintf('%s%03d', 
   substr(trimws(Tumor_Barcode), 1, 2), 
      as.integer(trimws(Tumor_Barcode, whitespace = "\\D+"))))

-output

代码语言:javascript
复制
> 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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71440793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档