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

R Remove leading 0's from a factor string

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

在较小的文件中,uniqueID 列中的前导 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 的解决方案。

我们可以使用 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")