2016-12-14 5 views
1

Моих данных выглядитGroupBy в MS Power Query/питания 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 

Я сделал группу При работе в среднем столбце оценки на основе «Имени», «Страна», столбцы «Группа» в запрос мощности (Power BI), то данные выглядят как

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

Но я пытаюсь получить средний балл, как «NA», когда есть> = 4 Na-х в Score колонке для каждого человека, который может выглядеть как

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

Я не мог найти решение, используя Группу напрямую, любые идеи или предложения? (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 
Смежные вопросы