【发布时间】:2021-04-16 17:55:34
【问题描述】:
具有 ISBN 的数据集包括一些乱七八糟的字母 - 因为 ISBN 中唯一有效的字母是最后一个位置的 X,我想使用 gsub 删除所有其他字母 - 有什么建议吗?
以下一个具有预期结果的简短示例:
str1
str2
str3
str4
有什么推荐吗?
【问题讨论】:
具有 ISBN 的数据集包括一些乱七八糟的字母 - 因为 ISBN 中唯一有效的字母是最后一个位置的 X,我想使用 gsub 删除所有其他字母 - 有什么建议吗?
以下一个具有预期结果的简短示例:
str1
str2
str3
str4
有什么推荐吗?
【问题讨论】:
另一种选择是删除所有非数字,同时保留数字末尾的 X:
gsub("((?<=\\d)X$)|\\D", "\\1", str1, perl = TRUE)
[1] "1234X" "1234" "" "1234"
【讨论】:
我们可以简单地使用gsub在字符串的末尾($)到SKIP,同时匹配一个或多个大写字母([A-Z]+),并将其替换为空白(@ 987654325@)
gsub("X$(*SKIP)(*F)|[A-Z]+", "", str1, perl = TRUE)
#[1] "1234X" "1234" "" "1234"
str1 <- c("1234X", "12X34", "XXXXX", "1234B")
【讨论】: