2017-04-11 18 views
0

我有一個DF,如:個以上的亞組總

Country is_sale count 
AU  1  10 
AU  0  30 
SE  1  5 
SE  0  4 

我想通過國家層面得到每銷售(is_sale = 1),在總的百分比:

國家PERC AU
SE

輸入將是:

country ratio 
AU  0.23 
SE  0.55 

如何用dplyr達到最佳效果?

+0

@docendodiscimus它類似於你的,但我在做這樣一來當您發佈的評論 – akrun

+0

@docendodiscimus您可以張貼,作爲一個解決方案。它看起來非常好。當你提出這個想法時,我不會發布它。我的意思是,我正在做所有的排列/組合來提出一個答案。我剛剛更新了評論,以簡明評論 – akrun

+0

@docendodiscimus我刪除了評論。全是你的。我認爲這是我的錯誤。通常情況下,我不更新這樣的評論 – akrun

回答

0

我會將您的二進制標誌轉換爲布爾值,因爲它使邏輯評估更簡單一些。然後使用dplyr,您可以按Country進行分組,並在總結功能的兩個步驟中計算分子和分母。

注意在總結步驟的第二行中引用ratio的能力;這是使dplyr非常簡潔的事情之一。

library(dplyr) 
Country = c('AU','AU','SE','SE') 
is_sale = c(1,0,1,0) %>% as.logical 
count = c(10,30,5,4) 

df = data.frame(Country, is_sale, count) 
df %>% 
    group_by(Country) %>% 
    summarize(
    ratio = sum(ifelse(is_sale, count, 0)), 
    ratio = ratio/sum(count) 
) 
+0

謝謝!我喜歡這個答案 – xxxvinxxx