我的数据框如下所示:
df <- data.frame(one=c("s1_below_10", "s2_below_20"),
two=c("s3_above_10","s4_above_10"))
我想用第一个下划线之前的数字替换所有字符串。换句话说,所需的输出是
1 3
2 4
我想知道如何执行此替换(数据集非常大)。谢谢你的帮助。
答案 0 :(得分:4)
基本gsub
调用类似于:
gsub("^.+?(\\d+)_.+","\\1",df$one)
[1] "1" "2"
您可以lapply
到每列:
data.frame(lapply(df, gsub, pattern="^.+(\\d+)_.+",replacement= "\\1"))
one two
1 1 3
2 2 4
答案 1 :(得分:2)
如果您想要的值总是字符串的第二个字符(对于您的所有示例似乎都是如此),您可以使用substr
执行此操作:
data.frame(lapply(df, substr, 2, 2))
输出:
one two
1 1 3
2 2 4