如何测试字符串中的前三个字符是r中的字母还是数字?
How to test if the first three characters in a string are letters or numbers in r?
下面给出了我的数据集的例子,注意我在整个数据集中有超过两列。
ID X
1 MJF34
2 GA249D
3 DEW235R
4 4SDFR3
5 DAS3
我想测试 X 中的前三个字符是否为字母,如果是则我想替换该值以仅显示前三个字母。如果前三个字符不是字母,那么我想用 "FR" 替换这些值。因此结果如下。
ID X
1 MJF
2 FR
3 DEW
4 FR
5 DAS
目前X是字符数据类型。
在此先感谢您的帮助。
我会尝试:
x <- substr(dt$X, 1, 3)
dt$X <- ifelse(grepl('[0-9]', x), 'FR', x)
dt
# ID X
# 1 1 MJF
# 2 2 FR
# 3 3 DEW
# 4 4 FR
# 5 5 DAS
数据:
structure(list(ID = 1:5, X = c("MJF34", "GA249D", "DEW235R",
"4SDFR3", "DAS3")), .Names = c("ID", "X"), class = "data.frame",
row.names = c(NA,
-5L))
您可以使用标准的基本 R 命令
# Your data, dt$X in your case
x = c("MJF34", "GA249D", "DEW235R", "4SDFR3", "DAS3")
先用substr
提取字符1到3
sub_str = substr(x, 1, 3)
然后测试一个数字
has_numbers = grep("[0-9]", sub_str)
然后替换
sub_str[has_numbers] = "FR"
下面给出了我的数据集的例子,注意我在整个数据集中有超过两列。
ID X
1 MJF34
2 GA249D
3 DEW235R
4 4SDFR3
5 DAS3
我想测试 X 中的前三个字符是否为字母,如果是则我想替换该值以仅显示前三个字母。如果前三个字符不是字母,那么我想用 "FR" 替换这些值。因此结果如下。
ID X
1 MJF
2 FR
3 DEW
4 FR
5 DAS
目前X是字符数据类型。
在此先感谢您的帮助。
我会尝试:
x <- substr(dt$X, 1, 3)
dt$X <- ifelse(grepl('[0-9]', x), 'FR', x)
dt
# ID X
# 1 1 MJF
# 2 2 FR
# 3 3 DEW
# 4 4 FR
# 5 5 DAS
数据:
structure(list(ID = 1:5, X = c("MJF34", "GA249D", "DEW235R",
"4SDFR3", "DAS3")), .Names = c("ID", "X"), class = "data.frame",
row.names = c(NA,
-5L))
您可以使用标准的基本 R 命令
# Your data, dt$X in your case
x = c("MJF34", "GA249D", "DEW235R", "4SDFR3", "DAS3")
先用substr
提取字符1到3
sub_str = substr(x, 1, 3)
然后测试一个数字
has_numbers = grep("[0-9]", sub_str)
然后替换
sub_str[has_numbers] = "FR"