使用正则表达式去除 R 数据框中的引号
Use regular expressions to remove quotation marks in R data frame
这是我的数据集(名为 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)
grep
仅在字符向量的每个元素内搜索匹配项,如果要替换特定模式的第一次出现,请使用 sub
或 gsub
替换所有出现次数。
示例:
> 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
或者,还有一个 nice 包 stringr
提供了一种方便的操作字符串的方法:
df <- data.frame(age = c(20,21), country = c('AU"', 'AU"'))
require(stringr)
df$country <- str_replace_all(string = df$country, pattern = '"', replacement = "")
我喜欢使用它,因为它的语法非常简单。
这是我的数据集(名为 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)
grep
仅在字符向量的每个元素内搜索匹配项,如果要替换特定模式的第一次出现,请使用 sub
或 gsub
替换所有出现次数。
示例:
> 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
或者,还有一个 nice 包 stringr
提供了一种方便的操作字符串的方法:
df <- data.frame(age = c(20,21), country = c('AU"', 'AU"'))
require(stringr)
df$country <- str_replace_all(string = df$country, pattern = '"', replacement = "")
我喜欢使用它,因为它的语法非常简单。