如何从R中的字符串中提取尾随数字?

时间:2018-12-10 16:21:31

标签: r string character

我有一列看起来像这样的数据:

**varX**

Q1#_1

Q1#_5

Q1#_10

我想将数据编辑成这样:

**varX**

1

5

10

是否有一个命令可以用来简单地保留下划线后的所有信息?

4 个答案:

答案 0 :(得分:0)

如果始终有Q1#_字符串,则可以执行以下操作:

gsub("Q1#_", "", df$varX)

答案 1 :(得分:0)

我认为您正在寻找sub,将字符串的某个部分替换为其他内容。如果愿意,可以给它一个正则表达式,也可以给它一个字面值:

VarX <- sub('Q1#_', '', VarX, fixed=T)

奇特的方式(“删除下划线之前的所有内容”)

VarX <- sub('^.*_', '', VarX)

您可能希望将其转换为数字或整数:

VarX <- as.integer(sub('Q1#_', '', VarX, fixed=T)) # or as.numeric

答案 2 :(得分:0)

您可以使用正则表达式吗?

df[["varX"]] <- sub(".+_", "", df[["varX"]])
df
  varX
1    1
2    5
3   10

无正则表达式的strsplit()

df[["varX"]] <- sapply(df[["varX"]], function(x) strsplit(x, "_")[[c(1,2)]])

答案 3 :(得分:0)

如果您需要tidyverse解决方案,则可以使用str_extract软件包中的stringr

data %>% 
mutate(varx = str_extract(varx, "[0-9]+$")) %>%
mutate(varx = as.numeric(varx)) # include this last line if you want a number and not character