【问题标题】:R Remove leading 0's from a factor stringR从因子字符串中删除前导0
【发布时间】:2017-12-21 20:34:15
【问题描述】:

我已使用 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 的解决方案。

【问题讨论】:

    标签: r substring read.csv leading-zero


    【解决方案1】:

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

    【讨论】:

    • 非常好的答案。如果最后一部分(data str
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2011-04-09
    相关资源
    最近更新 更多