2016-12-14 40 views
1

我的数据看起来像GROUPBY在MS电源查询/电源BI的具体数值

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 

我做了一个Group By操作基于“名称”,“国家”中,“组”列场均得分列功率查询(电源BI),那么数据的模样

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

但我试图让平均成绩为“NA”时,有> = 4娜在每个人得分列这可能看起来像

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

我无法直接找到使用Group的解决方案,任何想法或建议? (Power BI还支持R,可以完成这些任务的转换?)预先感谢。

回答

2

这可以通过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