2016-12-14 3 views
1

Meine Daten sieht aus wieGROUPBY in MS Power Query/Leistung BI für bestimmte Werte

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 

ich eine Gruppe von Operation Mitteln der Partitur Spalte gemacht, basierend auf 'Name', 'Land', 'Gruppe' Spalten in Leistungsabfrage (Power BI), dann sieht die Daten wie

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

Aber ich versuche Durchschnittswert als „NA“ zu erhalten, wenn es> = 4 Na für jede Person in Score-Spalte, die wie

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

Ich konnte keine Lösung finden mit der Gruppe direkt, irgendwelche Ideen oder Vorschläge? (Power BI unterstützt auch R, alle möglichen Transformationen, um dies zu erreichen?) Vielen Dank im Voraus.

Antwort

2

Dies kann mit dplyr wie folgt erreicht werden.

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