【问题标题】:Groupby in MS Power Query/Power BI for specific valuesMS Power Query/Power BI 中的 Groupby 用于特定值
【发布时间】:2016-12-14 12:14:57
【问题描述】:

我的数据看起来像

    Name  country  Group   Date      Score
      a      UK    IT     18/11/2016    1
      a      UK    IT     19/11/2016   -1
      a      UK    IT     20/11/2016    2
      a      UK    IT     21/11/2016    2
      a      UK    IT     22/11/2016    NA
      a      UK    IT     23/11/2016    NA
      a      UK    IT     24/11/2016    NA
      a      UK    IT     25/11/2016    NA
      a      UK    IT     26/11/2016    NA
      b      UK    VK     18/11/2016    1
      b      UK    VK     19/11/2016   -1
      b      UK    VK     20/11/2016    1
      b      UK    VK     21/11/2016    1
      b      UK    VK     22/11/2016    1
      b      UK    VK     23/11/2016   -2
      b      UK    VK     24/11/2016    2
      b      UK    VK     25/11/2016    1
      b      UK    VK     26/11/2016   -1

我根据电源查询(Power BI)中的“名称”、“国家”、“组”列对分数列进行了分组操作(Power BI),然后数据看起来像

   Name  country  Group   Average Score
      a      UK    IT        0.44
      b      UK    VK        0.33

但是当每个人的分数列中有 >=4 Na 时,我试图将平均分数设为“NA”,这可能看起来像

   Name  country  Group   Average Score
      a      UK    IT        NA
      b      UK    VK        0.33

我无法直接使用 Group by 找到解决方案,有什么想法或建议吗? (Power BI 还支持 R,可以进行任何转换来实现这一点吗?)提前致谢。

【问题讨论】:

    标签: r powerbi powerquery powerbi-embedded


    【解决方案1】:

    这可以通过dplyr 来完成,如下所示。

    library(dplyr)
    
    df  <- read.table(text = "Name  country  Group   Date      Score
    a      UK    IT     18/11/2016    1
    a      UK    IT     19/11/2016   -1
    a      UK    IT     20/11/2016    2
    a      UK    IT     21/11/2016    2
    a      UK    IT     22/11/2016    NA
    a      UK    IT     23/11/2016    NA
    a      UK    IT     24/11/2016    NA
    a      UK    IT     25/11/2016    NA
    a      UK    IT     26/11/2016    NA
    b      UK    VK     18/11/2016    1
    b      UK    VK     19/11/2016   -1
    b      UK    VK     20/11/2016    1
    b      UK    VK     21/11/2016    1
    b      UK    VK     22/11/2016    1
    b      UK    VK     23/11/2016   -2
    b      UK    VK     24/11/2016    2
    b      UK    VK     25/11/2016    1
    b      UK    VK     26/11/2016   -1", 
                      header = TRUE)
    
    pivot <- df %>%
      group_by(Name, country, Group) %>%
      summarise(avg_score = ifelse(sum(is.na(Score)) >= 4, NA, mean(Score)))
    
    > pivot
    Source: local data frame [2 x 4]
    Groups: Name, country [?]
    
        Name country  Group avg_score
      <fctr>  <fctr> <fctr>     <dbl>
    1      a      UK     IT        NA
    2      b      UK     VK 0.3333333
    

    【讨论】:

      猜你喜欢
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-10
      • 1970-01-01
      相关资源
      最近更新 更多