【问题标题】:remove double quotes from factors in a dataframe从数据框中的因子中删除双引号
【发布时间】:2018-11-06 08:38:00
【问题描述】:

我有一个数据框可以处理,我有一堆变量作为引号中的因素,例如""x1""。

str(df) 给了我这样的东西:

$ x : Factor w/ 10 Levels "\"\"x1\"\"",..: 1 7 9 ...

我试图用gsub() 函数去掉引号,但是没有用。可能是因为我不知道要插入什么作为模式?如果有人能解决这个难题,如果"\"\"x1\"\"" 是解决这个问题的方法,也许可以向我解释一下?

数据框的示例如下所示:

structure(list(Sent = structure(c(2L, 2L, 2L, 2L, 2L), .Label = c("\"\"Opted out\"\"", 
"\"\"Yes\"\""), class = "factor"), Responded = structure(c(2L, 
2L, 2L, 2L, 2L), .Label = c("\"\"Complete\"\"", "\"\"No\"\"", 
"\"\"Partial\"\""), class = "factor")), row.names = c(NA, -5L
), class = c("tbl_df", "tbl", "data.frame"), .Names = c("Sent", 
"Responded"))

提前致谢!

【问题讨论】:

  • 如果能提供可重现的例子就好了

标签: r regex gsub


【解决方案1】:
vec = c('""x1""', '""x2""', '""x3""')
vec =  factor(vec)

levels(vec) <- gsub('["\\]', "", levels(vec))

#> vec
#[1] x1 x2 x3
#Levels: x1 x2 x3

  • 当我想在字符串中使用" 时,看看如何使用' 作为包装器。

  • 它对您不起作用的另一个问题可能是因为您没有使用级别属性,而是使用因子变量本身。

  • 因子变量在内部存储为1, 2, 3,... 数字。

由于您现在已经提供了数据,您可以使用:(df1 是您的带有因子列的数据)

df1[] <- lapply(df1, function(vec){ levels(vec) <- gsub('["\\]',"",levels(vec)); vec})

【讨论】:

  • 谢谢!那么我怎么知道将'["\\]' 作为模式呢?
  • levels(vec) &lt;- gsub('"', "", levels(vec), fixed=TRUE) 也可以。
  • " 和 \ 是您要删除的内容吗? \ 需要转义到 \\.为了擅长这些东西,深入研究 regEx。太值得了!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 2016-02-15
相关资源
最近更新 更多