我使用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的解决方案将非常受欢迎。
答案 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")