R:无法识别新表中的列

时间:2019-07-15 22:14:39

标签: r dplyr

这是我正在做的在线课程的一部分,R用于数据分析。

使用group_by创建一个小标题,并在Diamonds数据集上汇总函数-新的小标题确实存在,并且外观与您期望的一致,我检查了一下。现在必须使用新的小标题中的这些摘要值来创建条形图,但这会给我带来各种与无法识别列相关的错误。 我将小标题转换为数据框,仍然遇到相同的问题。

这是代码:

diamonds_by_color <- group_by(diamonds, color)
diamonds_mp_by_color <- summarise(diamonds_by_color, mean_price = mean(price))
diamonds_mp_by_color <- as.data.frame(diamonds_mp_by_color)
colorcounts <- count(diamonds_by_color$mean_price)
colorbarplot <- barplot(diamonds_by_color$mean_price, names.arg = diamonds_by_color$color, 
                           main = "Average price for different colour diamonds")

运行函数计数时出现的错误是:

  

UseMethod(“ summarise_”)中的错误:     没有适用于“ summarise_”的适用方法应用于类“ NULL”的对象

     

此外:警告消息:   未知或未初始化的列:“均价”。

这可能有些琐碎,但我已经阅读了很多,尝试了一些尝试,但无法弄清楚。任何帮助将不胜感激:)

3 个答案:

答案 0 :(得分:0)

您的diamonds_by_color从未分配过mean_price

如果您改为引用diamonds_mp_by_color,则最后两行代码可以工作:

colorcounts <- count(diamonds_mp_by_color, mean_price)
barplot(diamonds_mp_by_color$mean_price,
        names.arg=diamonds_mp_by_color$color,
        main="Average price for different colour diamonds")

答案 1 :(得分:0)

最好的dplyr习惯用法是不为每个操作声明一个临时结果。只是做一个大烟斗;此外,%>%表示法也更清晰,因为您不必在每个操作中始终指定哪个数据帧作为第一个arg:

diamonds %>%
    group_by(color) %>%
    summarise(mean_price = mean(price)) %>%
    tally() %>% # equivalent to n() on a group
    # may need ungroup() %>%
    barplot(mean_price, names.arg = color, 
        main = "Average price for different colour diamonds")

(类似的事情。您可以根据需要在管道图之前分配管道的输出。我正在穿越机场,因此无法在R中检查它。)

答案 2 :(得分:0)

这是一种使用dplyr按颜色汇总价格并使用ggplot2直接将其传递到小图的方法。

diamonds %>% group_by(color) %>% 
  summarise(mean.price=mean(price,na.rm=1)) %>% 
  ggplot(aes(color,mean.price)) + geom_bar(stat='identity')

Summary barplot