总结使用单个列的条件

问题描述 投票:1回答: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))

但是“是”的值保持与“否”相同的值。我试图使用“if”条件但是没有用。

我想要做的是通过帮助总结一下df.help == "No"df.help == "Yes"之和的总和,以及它们各自的概率。

最终结果应如下所示:

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

用ddply或其他方式进行此操作的适当方法是什么?

问候

r dplyr condition summarize
1个回答
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

Explanation

%>%将左侧命令的输出转发给操作员右侧的命令。你可以在彼此之后链接几个命令,但是当它起作用时,它很快就会变得一团糟。

group_by(HELP)会将您的数据框划分为HELP中具有相同值的行。它也可能需要几列。

summarise(Total = n()) - n()是另一个dplyr函数,它被设置为组中的行数。在summarisemutate都提供了新的列名,没有'"

mutate(Probability = Total / sum(Total)) - 简单的计算,基于之前计算的结果

© www.soinside.com 2019 - 2024. All rights reserved.