【问题标题】:How to test if the first three characters in a string are letters or numbers in r?如何测试字符串中的前三个字符是r中的字母还是数字?
【发布时间】:2017-11-16 14:00:52
【问题描述】:

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

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

提前感谢您的帮助。

【问题讨论】:

    标签: r if-statement character numeric


    【解决方案1】:

    我会尝试:

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

    【讨论】:

      【解决方案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"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-27
        • 1970-01-01
        • 1970-01-01
        • 2010-11-04
        • 2015-03-31
        • 2013-06-01
        • 2015-05-16
        相关资源
        最近更新 更多