Суммируйте, используя условие для одного столбца
Пример данных:
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 == "Нет" и сумму df.help == "Да" и их соответствующие вероятности.
Конечный результат должен выглядеть примерно так:
| | Help | Total | Probability |
|----|------|-------|--------------|
| 1 | Yes | 4 | 0.666 |
| 2 | No | 2 | 0.333 |
Каков подходящий способ сделать это с ddply или другим способом?
С уважением
1 ответ
Я предлагаю использовать 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))
- простой расчет, основанный на результатах, только что рассчитанных в предыдущем шаге