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

标签 r substring read.csv leading-zero

我已使用 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/

相关文章:

c# - String.Substring() 似乎是这段代码的瓶颈

javascript - 有没有更有效的算法来找到这种子串?

java 字符串查询

来自在线网页链接的 R read_excel 生成一个空数据框

r - fread - 读取所有列作为字符

regex - 在R中的字符串中用 "+-"替换 "-"

r - 使用 mutate_at 缩短多个 dplyr 突变?

r - 在 R 中的 mutate 语句中调用 API

r - 导入数据框时过滤多个 csv 文件

R 函数 read.csv 失败, "scan() expected ' 是一个真实的',得到......“消息