2

我有一个如下所示的数据框:

df <- data.frame(one=c("s1_below_10", "s2_below_20"), 
                 two=c("s3_above_10","s4_above_10"))

我想用第一个下划线之前的数字替换所有字符串。换句话说,期望的输出是

1   3
2   4

我想知道如何执行此替换(数据集非常大)。谢谢你的帮助。

4

2 回答 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
于 2013-08-13T00:18:14.127 回答
2

如果您想要的值始终是字符串的第二个字符(您的所有示例似乎都是如此),您可以这样做substr

data.frame(lapply(df, substr, 2, 2))

输出:

  one two
1   1   3
2   2   4
于 2013-08-13T00:20:57.703 回答