首页 > 解决方案 > 尽管列在数据框中,但不能对列进行子集化

问题描述

我有这个代码:

    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` 不存在”

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

标签: rplotgroup-bysubsetdata-manipulation

解决方案


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

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))

推荐阅读