【问题标题】:Change char name containing colon (":") with dplyr使用 dplyr 更改包含冒号 (":") 的字符名称
【发布时间】:2016-05-26 11:29:20
【问题描述】:

我有一个包含国家名称的数据集,如下所示:

 - en:france
 - en:united-kingdom
 - en:spain

我想把名字改成这样的:

 - France
 - United_Kingdom
 - Spain

但如果我将select 函数与dplyr 一起使用,我会收到此错误:

“评估错误(expr,envir,enclos):找不到对象'en'”。

这是我目前编写的代码(使用来自Kaggle called foodfacts 的数据框):

countries <- foodfacts %>%
         tbl_df() %>%
         group_by(countries_tags) %>%
         summarise(count = n()) %>%
         filter(!grepl(",", countries_tags)) %>%
         select(France = en:france) %>%
         arrange(desc(count))

谁能告诉我如何更改包含冒号的对象的名称?

【问题讨论】:

  • 也许make.names(sub("en:", "", c("en:france","en:united-kingdom","en:spain"))) ?此外,错误说 en:france 应该用引号引起来:"en:france"
  • 为什么不直接使用现有的foodfacts$countries_en 列?

标签: r dplyr kaggle


【解决方案1】:

select 只选择列。如果列名有冒号,您可能必须使用 select_ 并引用列名:select_("en:france")

如果您需要案例,您必须使用 filter - 但请注意,比较需要 ==,而不是单一的 =(如上面的选择调用):filter(France == "en:france")

如果您需要重命名,请使用colnames(dat)[which(colnames(dat) == "en:france")] &lt;- "France"

如果需要重命名values,也可以使用dat$x[which(dat$x == "en:france")] &lt;- "France"

【讨论】:

  • dat$x[which(dat$x == "en:france")] &lt;- "France" 成功了,非常感谢! ;)
猜你喜欢
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 2015-09-09
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多