R数据帧中的变量字符串替换

时间:2013-08-13 00:04:26

标签: string r replace

我的数据框如下所示:

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

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

1   3
2   4

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

2 个答案:

答案 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