【问题标题】:Can't subset column despite columns are in dataframe尽管列在数据框中,但不能对列进行子集化
【发布时间】:2021-11-27 10:08:05
【问题描述】:

我有这个代码:

    drugs_from_samples = read_excel("/Downloads/drugs from samples.xlsx") %>% 
       dplyr::select("drug", "Indication reviewed", "Action reviewed", "frequency")

导致:

然后,当我尝试时

df = drugs_from_samples %>% 
  dplyr::select(-drug) %>% 
  group_by(`Indication reviewed`, `Action reviewed`) %>% 
  summarise(n = sum(frequency))


PieDonut(df,
         aes(df$`Indication reviewed`, df$`Action reviewed`, count = n))

当我尝试绘制 PieDonut 时,它给了我以下错误:

"不能对不存在的列进行子集化。x 列 df$`Indicationreviewed` 和 df$`Actionreviewed` 不 存在”

我已经在寻找这个特定问题的答案,有人可以提供任何帮助吗?

【问题讨论】:

  • 不建议在列名中使用空格。使用它们既困难又令人困惑。您可以使用janitor::clean_names() 函数来获得更好的列名。

标签: r plot group-by subset data-manipulation


【解决方案1】:

列名可能有问题。在执行操作之前,请尝试以下操作:

colnames(drugs_from_sample) <- gsub(" ", "_", colnames(drugs_from_sample))

这会将列名中的空格替换为下划线。然后将您的代码替换为:

df = drugs_from_samples %>% 
  dplyr::select(-drug) %>% 
  group_by(Indication_reviewed, Action_reviewed) %>% 
  summarise(n = sum(frequency))


PieDonut(df,
         aes(df$Indication_reviewed, df$Action_reviewed, count = n))

【讨论】:

  • 还是不行,还是和以前一样的错误
  • 如果您可以使用data.frame()structure() 提供数据而不是图像,那就太好了,这样我们就可以重现您的错误
猜你喜欢
  • 2013-08-15
  • 2019-09-29
  • 2013-04-22
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 2017-07-29
相关资源
最近更新 更多