我的数据看起来像
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操作,根据电源查询(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的解决方案,任何想法或建议? (Power BI还支持R,可以实现这一目的的任何转换吗?)提前感谢。
答案 0 :(得分: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