繁体   English   中英

将字符添加到数据框中的数字列

[英]Add characters to a numeric column in dataframe

我有这样的数据帧:

  V1      V2      V3 
1  1 3423086 3423685 
2  1 3467184 3467723 
3  1 4115236 4115672 
4  1 5202437 5203057 
5  2 7132558 7133089 
6  2 7448688 7449283 

我想更改V1列并在数字前添加chr。 像这样:

  V1      V2      V3 
1  chr1 3423086 3423685 
2  chr1 3467184 3467723 
3  chr1 4115236 4115672 
4  chr1 5202437 5203057 
5  chr2 7132558 7133089 
6  chr2 7448688 7449283 

在R中有办法做到这一点吗?

正则表达式模式“^”(在任何字符类括号之外)表示“字符”类项目的第一个字符之前的点(在其他计算机语言中也称为“字符串”)。 这只是用“chr”的词干替换向量中每个“character”元素的开头。 它隐含地将“数字”输入值强制转换为“字符”,因此改变了结果的模式。

> dat$V1 <- sub("^", "chr", dat$V1 )
> dat
    V1      V2      V3
1 chr1 3423086 3423685
2 chr1 3467184 3467723
3 chr1 4115236 4115672
4 chr1 5202437 5203057
5 chr2 7132558 7133089
6 chr2 7448688 7449283

当然,可以使用paste("chr", dat$V1, sep="") ,但我认为正则表达式解决方案可能更整洁。

sprintf比普通连接更强大。

dat$V1 <- sprintf('chr%i', dat$V1)

我们也可以使用interaction

df$V1 <- interaction( "chr", df$V1, sep = "")
df

或者使用sqldf

library(sqldf)    
df$V1 <- as.character(df$V1)
df$V1 <- sqldf("select 'chr'|| V1 as V1 from df") 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM