【问题标题】:Group_By and Sum() giving rather unextpected resultsGroup_By 和 Sum() 给出了相当出乎意料的结果
【发布时间】:2018-06-17 00:59:36
【问题描述】:

我从 excel 导入了一个包含 1071 行和 16 列的文件,代表自 2005 年以来在巴西赢得能源拍卖的所有可再生能源项目。

> HIST <- read_excel("D:/Paulo/Desktop/2018 Historico Leiloes Total para R.xls", 
+     col_types = c("numeric", "text", "text", 
+         "text", "text", "text", "date", "numeric", 
+         "numeric", "numeric", "numeric", 
+         "numeric", "numeric", "numeric", 
+         "numeric", "numeric"))

> HIST
# A tibble: 1,071 x 16
     Ano        Leilao Fonte    UF                Vend
   <dbl>         <chr> <chr> <chr>               <chr>
 1  2011      2011 LER   Bio    SP      Louis Dreyffus
 2  2008 2008 Leilao 1   Bio    MG                CMAA
 3  2008 2008 Leilao 1   Bio    SP              RAIZEN
 4  2017      2017 A-4    PV    PI                Enel
 5  2013    2013 A-5 2  PPEE    BA               CHESF
 6  2008 2008 Leilao 1   Bio    SP             Abengoa
 7  2008 2008 Leilao 1   Bio    GO                 N/A
 8  2009      2009 A-3  PPEE    RS           Eletrosul
 9  2017      2017 A-4    PV    BA SOLATIO SINDUSTRIAL
10  2009      2009 A-3  PPEE    RS           Eletrosul
# ... with 1,061 more rows, and 11 more variables: Projeto <chr>, CODPPA <dttm>,
#   CAPEX <dbl>, MW <dbl>, GF <dbl>, FC <dbl>, PPA <dbl>, RMW <dbl>, WACC <dbl>,
#   TIR <dbl>, VPL <dbl>

然后,我加载了 dplyr:

> library(dplyr)

最后,当我按 YEAR(葡萄牙语为 ANO)分组并总结 MW(兆瓦)的总和时 - 我想知道每年拍卖多少兆瓦 - 我得到以下相当令人失望的结果:

HIST %>%
+     group_by(HIST$Ano)%>%
+     summarise(sum(HIST$MW))

# A tibble: 13 x 2
   HIST$Ano sum(HIST$MW)
    <dbl>          <dbl>
 1       2005       72677.67
 2       2006       72677.67
 3       2007       72677.67
 4       2008       72677.67
 5       2009       72677.67
 6       2010       72677.67
 7       2011       72677.67
 8       2012       72677.67
 9       2013       72677.67
10       2014       72677.67
11       2015       72677.67
12       2016       72677.67
13       2017       72677.67`

是否应该将每年的 MW 相加?它显示MW的总和,并且每年重复该值。我做错了什么?

谢谢你,保罗

【问题讨论】:

  • 嗨,我认为您不需要 Hist$Ano 和 Hist$MW。我认为正在发生的事情是,它是从原始数据帧中求出 MW 的总和,而不是让数据帧传递给 group_by,然后再传递给您调用整个总和的总和。尝试摆脱 hist$
  • 是的,tidyverse函数一般都使用Non-Standard Evaluation,所以可以直接引用裸列名,而不是重复引用原始数据框。这与(大多数)基本 R 有点不同!

标签: r excel group-by dplyr summarize


【解决方案1】:

试试

HIST %>%
    group_by(Ano) %>%
    summarise(soma = sum(MW))

【讨论】:

    猜你喜欢
    • 2013-04-19
    • 2021-03-25
    • 2015-11-16
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多