R - 如何根据它们的值从字符串中删除字符?
R - how to drop chars from string depending on their values?
我有一个 CSV 文件,其中数值的存储方式如下:
+000000000000000000000001101.7100
上面的数字是1101.71。该字符串的长度始终相同,因此实际数字之前的零数取决于数字的长度。
我怎样才能在实际数字之前去掉 + 和全 0,以便我可以轻松地将它转换为数字?
如果是固定宽度,那么substring
会是一个更快的选择
as.numeric(substring(str1, nchar(str1)-8))
#[1] 1101.71
但是如果我们不知道开头会有多少个 0,那么另一种选择是 sub
我们在开头匹配 +
(^
)字符串的后跟 0 个或多个 0 的元素 (0*
) 并替换为空白 (""
)
as.numeric(sub("^\+0*", "", str1))
#[1] 1101.71
请注意,我们对 +
进行了转义,因为它是一个暗示一个或多个
的元字符
我可能漏掉了一个重点,但我最好的尝试是这样的:
1) 以字符形式读取值
2) 用substr去掉第一个字符,即加号
3) 使用 as.integer 转换列/这样我们就可以安全地丢失任何前导零
我有一个 CSV 文件,其中数值的存储方式如下:
+000000000000000000000001101.7100
上面的数字是1101.71。该字符串的长度始终相同,因此实际数字之前的零数取决于数字的长度。 我怎样才能在实际数字之前去掉 + 和全 0,以便我可以轻松地将它转换为数字?
如果是固定宽度,那么substring
会是一个更快的选择
as.numeric(substring(str1, nchar(str1)-8))
#[1] 1101.71
但是如果我们不知道开头会有多少个 0,那么另一种选择是 sub
我们在开头匹配 +
(^
)字符串的后跟 0 个或多个 0 的元素 (0*
) 并替换为空白 (""
)
as.numeric(sub("^\+0*", "", str1))
#[1] 1101.71
请注意,我们对 +
进行了转义,因为它是一个暗示一个或多个
我可能漏掉了一个重点,但我最好的尝试是这样的:
1) 以字符形式读取值
2) 用substr去掉第一个字符,即加号
3) 使用 as.integer 转换列/这样我们就可以安全地丢失任何前导零