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")
我已经使用 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")