我已使用 read.csv() 函数将多个 Excel 文件导入到 R 中。
在较小的文件上,uniqueID 列中的前导 0 已保留 例如085405、021X1B、0051012
但是,在较大的文件中,前导 0 已从仅包含数字的 uniqueID 中删除 例如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")
关于R 从因子字符串中删除前导 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45141970/