【发布时间】:2015-04-11 05:57:38
【问题描述】:
我需要拆分获取^之前的所有字符
示例: 我在数据框中有一列读取
2567543^ABC
7545435^J
8934939^XY
同一数据框中的结果列应为:
2567543
7545435
8934939
我尝试使用stringr、strsub{base}、stringi、gsubfn。但是他们抛出了奇怪的结果,因为^。我无法替换^,因为这张桌子实在太大了。
【问题讨论】:
我需要拆分获取^之前的所有字符
示例: 我在数据框中有一列读取
2567543^ABC
7545435^J
8934939^XY
同一数据框中的结果列应为:
2567543
7545435
8934939
我尝试使用stringr、strsub{base}、stringi、gsubfn。但是他们抛出了奇怪的结果,因为^。我无法替换^,因为这张桌子实在太大了。
【问题讨论】:
只需使用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"]])。