示例数据:
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或其他方式解决这个问题的合适方法是什么?
此致
答案 0 :(得分:0)
我建议您在标记时使用dplyr
。这样,您就可以使用group_by
轻松对数据进行分组,并使用summarise
和mutate
添加新列以获得所需的结果。
> 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
函数,设置为组中的行数。在summarise
和mutate
中,新的列名称都是,不含 '
或"
mutate(Probability = Total / sum(Total))
- 简单计算,基于之前步骤中计算的结果