我有一列看起来像这样的数据:
**varX**
Q1#_1
Q1#_5
Q1#_10
我想将数据编辑成这样:
**varX**
1
5
10
是否有一个命令可以用来简单地保留下划线后的所有信息?
答案 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