如何测试字符串中的前三个字符是r中的字母还是数字?

时间:2017-11-16 14:00:52

标签: r if-statement character numeric

下面给出了我所拥有的数据集的示例,请注意我在总数据集中有两列以上。

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是一种字符数据类型。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

我会尝试:

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))

答案 1 :(得分:2)

您可以使用标准基本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"