我有一个如下所示的数据框:
df <- data.frame(one=c("s1_below_10", "s2_below_20"),
two=c("s3_above_10","s4_above_10"))
我想用第一个下划线之前的数字替换所有字符串。换句话说,期望的输出是
1 3
2 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
如果您想要的值始终是字符串的第二个字符(您的所有示例似乎都是如此),您可以这样做substr
:
data.frame(lapply(df, substr, 2, 2))
输出:
one two
1 1 3
2 2 4