R从因子字符串中删除前导0

时间:2017-07-17 10:35:56

标签: r substring read.csv leading-zero

我使用read.csv()函数将多个excel文件导入到R中。

在较小的文件中,保留了唯一ID列中的前导0     例如085405,021X1B,0051012

然而,对于较大的文件,前导0已从唯一ID中删除,其中只包含数字     例如85405,021X1B,51012

我想从所有uniqueID中删除前导0,以便我能够合并。

我尝试使用以下代码:

Test$UniqueID2 <- substr(Dataset$UniqueID,regexpr("[^0]",Dataset$UniqueID,nchar(Dataset$UniqueID))

这会产生以下错误:

Error in nchar(Dataset$UniqueID) : 
  'nchar()' requires a character vector

允许我放弃R中的前导0的解决方案将非常受欢迎。

1 个答案:

答案 0 :(得分:3)

我们可以使用sub来匹配字符串开头(0)的零(^),后跟零个或多个数字([0-9]*)直到字符串的结尾($),该字符串被捕获为一个组,并被捕获的组的反向引用(\\1)取代

sub("^0+([0-9]*)$", "\\1", str1)
#[1] "85405"  "021X1B" "51012"

如果我们要从所有ID中删除

sub("^0+", "", str1)

或者我们可以使用as.numeric方法

v1 <- as.numeric(str1)
v1[is.na(v1)] <- str1[is.na(v1)]

数据

str1 <- c("085405", "021X1B", "0051012")