2017-06-20 52 views
1

的樣本數據:彙總使用條件單列

df <- data.frame(HELP = c("Yes", "Yes", "Yes", "No", "Yes", "No")) 

我所做的:

cdata <- ddply(df, c("HELP"), summarise, 
      Total = sum(df$HELP == 'No'), 
      Probability = Total/nrow(df) 

但值設置爲 「是」 保持不變值「不」。我試過使用「如果」的條件,但沒有奏效。

我想要做的是通過幫助來總結df.help ==「No」和df.help ==「Yes」的總和以及它們各自的概率。

最終的結果應該是這個樣子:

| | Help | Total | Probability | 
|----|------|-------|--------------| 
| 1 | Yes | 4  | 0.666  | 
| 2 | No | 2  | 0.333  | 

什麼是適當的方式去了解這個與ddply或其他方式?

Regards

回答

0

我建議您使用dplyr,因爲您標記了。這使您可以使用group_by輕鬆分組數據,並使用summarisemutate,您可以添加新列以實現預期結果。

> library(dplyr) 
> df %>% group_by(HELP) %>% summarise(Total = n()) %>% mutate(Probability = Total/sum(Total)) 
# A tibble: 2 x 3 
    HELP Total Probability 
    <fctr> <int>  <dbl> 
1  No  2 0.3333333 
2 Yes  4 0.6666667 

說明

%>%轉發從命令左側的輸出,以命令在操作者的權利。你可以在彼此背後鏈接幾個命令,但是當它工作時,它很快就會變得亂七八糟。

group_by(HELP)會將您的數據幀分成HELP中具有相同值的那些行。它也可能需要幾列。

summarise(Total = n()) - n()是另一個dplyr函數,即設置爲您組中的行數。在這兩個summarisemutate新列名提供沒有'"

mutate(Probability = Total/sum(Total)) - 簡單的計算的基礎上,只是在步驟中計算的結果

+0

謝謝你!我理解你的所有解釋,對我很有幫助。 –

+0

您的歡迎!如果答案有幫助,請指出接受,除非你仍然在尋找ddply的方式? – Brian

+0

謝謝@布萊恩!這對我有用! –