2016-12-14 83 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