【问题标题】:Problems with aggregate function R聚合函数 R 的问题
【发布时间】:2017-08-02 04:56:01
【问题描述】:

我正在尝试整合一些数据,但不幸的是,我似乎有一些损失......

dataframe <-   Project    Subproject       Value      Date  
                 A           1              9       2017-03-08
                 A           2              5       2017-03-08
                 B           1              1       2017-03-08

overall <- aggregate(dataframe$Valeu, by=list(Date=dataframe$Date, Project=dataframe$Project), FUN=sum)

只会这样回复我:

dataframe <-   Project      Value      Date  
                 A           14       2017-03-08

当我想要的是这个时

dataframe <-   Project    Value      Date  
                 A          14       2017-03-08
                 B           1       2017-03-08

更新:我再次尝试了建议的解决方案,虽然 R 告诉我在我的数据框中有一个项目 B 具有所述值和日期,但我的 ggplot 告诉我否则......

 ggplot(data = dataframe, aes(x = Date, y = Value, fill = Project)) +
  geom_bar(stat = 'identity') + geom_text(data = dataframe, aes(label = Value, fill = Project), size=4)

无论我做什么,它都只是绘制来自项目 A 的数据。但是,如果我不汇总/汇总数据,它将像往常一样为我绘制两个项目,但是 geom_text 仍将继续分别为项目 A 提供两个数字的条形图。我的总体目标是拥有一个按照我描述的聚合数据框,以便我可以使用 geom_text 正确地标记我的条形图干净地绘制聚合数据......

【问题讨论】:

  • 除了 dataframe$Valeu 中的错误(应该是 dataframe$Value)之外,使用 aggregate() 对我来说效果很好

标签: r dataframe ggplot2 sum aggregate


【解决方案1】:

你可以试试:

df %>%
  group_by(Project, Date)%>%
  summarise(Value = sum(Value))

给出:

  Project       Date Value

1       A 2017-03-08    14
2       B 2017-03-08     1

并且可以像ggplot(data = df, aes(x = Date, y = Value, fill = Project)) + geom_bar(stat = 'identity') 一样绘制

编辑 1:根据 OP 的评论,要将输出保存在数据框中,请使用 df %&lt;&gt;% ... 之类的东西,而不是库 magrittr 中的 df %&gt;% ...

【讨论】:

  • 您的解决方案据说是说项目 B 的数据确实在数据框中,但不会出现在我的 ggplot... ggplot(data = df, aes(x = Date, y = Value , 填充 = 项目)) + geom_bar(stat = 'identity')
  • 为我工作。很可能您只是没有正确保存数据。检查编辑。此外,为原始问题中未提及的后续问题添加新问题总是有帮助的。
  • 谢谢@Aramis,我在这里添加了一个关于我的问题的新的、更详细的问题stackoverflow.com/questions/45461936/…
猜你喜欢
  • 2015-10-08
  • 1970-01-01
  • 2017-06-04
  • 2012-06-24
  • 2021-12-31
  • 1970-01-01
  • 2014-04-23
  • 2012-11-17
相关资源
最近更新 更多