2017-06-20 54 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

谢谢@布莱恩!这对我有用! –