【问题标题】:Use regular expressions to remove quotation marks in R data frame使用正则表达式删除 R 数据框中的引号
【发布时间】:2015-04-18 02:49:15
【问题描述】:

这是我的数据集(名为 g)现在的样子。我在 R 工作。

Q.35 | Q.36 | age | gender | country 

2 | 2 | 1 | 20 | 2 | AU"       
3 | 5 | 5 | 21 | 1 | AU"       

我想删除国家代码上的那些引号(AU 而不是 AU")。但是我尝试过的正则表达式没有用。

h <- grep("\"", "", g)

h <- grep(""", "", g)

h <- grep('"', '', g)

如何删除那些引号?

编辑

成功了!我应该一直使用 gsub,而不是 grep。

但是 gsub 搞砸了我的代码,所以我意识到我必须将 gsub 应用于特定的变量,如下所示:

h$country.f <- gsub("\"", "", h$country.f)

【问题讨论】:

  • sub/gsub 不是grep

标签: r regex gsub


【解决方案1】:

grep 仅在字符向量的每个元素内搜索匹配项,如果要替换特定模式的第一个匹配项,请使用 subgsub 替换所有匹配项。

示例

> h <- data.frame(age = c(20,21), country = c('AU"', 'AU"'))
> h$country <- gsub('"', '', h$country)
> h

#   age country
# 1  20      AU
# 2  21      AU

【讨论】:

    【解决方案2】:

    另外,还有一个不错的包stringr,它提供了一种操作字符串的便捷方式:

    df <- data.frame(age = c(20,21), country = c('AU"', 'AU"'))
    require(stringr)
    df$country <- str_replace_all(string = df$country, pattern = '"', replacement = "")
    

    我喜欢使用它,因为它的语法非常简单。

    【讨论】:

    • 哇,我什至没有想到!谢谢!
    猜你喜欢
    • 2013-01-13
    • 2021-09-04
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2019-03-16
    • 2013-11-16
    • 1970-01-01
    • 2018-02-17
    相关资源
    最近更新 更多