【问题标题】:Split a string based on "^" in R在R中根据“^”拆分字符串
【发布时间】:2015-04-11 05:57:38
【问题描述】:

我需要拆分获取^之前的所有字符

示例: 我在数据框中有一列读取

2567543^ABC 
7545435^J 
8934939^XY

同一数据框中的结果列应为:

2567543
7545435
8934939

我尝试使用stringrstrsub{base}stringigsubfn。但是他们抛出了奇怪的结果,因为^。我无法替换^,因为这张桌子实在太大了。

【问题讨论】:

    标签: r string stringr stringi


    【解决方案1】:

    只需使用sub 函数从^ 删除所有字符直到最后一个字符。由于^ 是正则表达式中匹配行首的特殊元字符,因此您需要转义^ 符号以匹配文字^ 符号。

    sub("\\^.*", "", df$x)
    

    示例:

    > df <- data.frame(x=c("2567543^ABC", "7545435^J", "8934939^XY"))
    > df$x <- sub("\\^.*", "", df$x)
    > df
            x
    1 2567543
    2 7545435
    3 8934939
    

    > df <- data.frame(x=c("2567543^ABC", "7545435^J", "8934939^XY"))
    > df$x <- strsplit(as.character(df$x), "\\^")[[1]][1]
    > df
            x
    1 2567543
    2 2567543
    3 2567543
    

    在 strsplit 中使用fixed=TRUE 参数,因为^ 是一个特殊字符。

    > df <- data.frame(x=c("2567543^ABC", "7545435^J", "8934939^XY"))
    > df$x <- strsplit(as.character(df$x), "^", fixed=TRUE)[[1]][1]
    > df
            x
    1 2567543
    2 2567543
    3 2567543
    

    【讨论】:

    • 标识所有可以使用的数字 gsub("\\D", "", df[["x"]])
    猜你喜欢
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多