J'ai un cadre de données avec trois variables comme celle-ci:
variable <- c("A", "B", "C", "B", "B", "A", "C")
mean <- c(2,4,5,4,3,1,5)
counts <- c(100, 200, 300, 150, 400, 200,250)
df <- data.frame(variable, mean, counts)
Je veux multiplier le mean
avec le nombre de counts
et les ajouter par variable
. Ensuite, je veux diviser le résultat par le nombre de counts
par variable
. Le résultat devrait ressembler à cet exemple pour le variable A
:
(2 * 100 + 1 * 200) / 300 = 1,333333
Ensuite, je veux agréger le résultat par variable
comme dans le group_by
et summarise
fonction dans dplyr
. Une idée comment cela fonctionne? Je l'ai essayé avec group_by et mutate
mais il n'y avait pas d'agrégation. Le résultat devrait ressembler à celui-ci:
Variable Mean
A some value
B some value
C some value
Réponses:
3 pour la réponse № 1Cela fonctionnerait - vous devez simplement spécifier le calcul car un appel à mean
divisera bien sûr par le nombre (par exemple 2 pour le premier) bibliothèque (tidyverse)
df %>%
mutate(multiple = mean * counts) %>%
group_by(variable) %>%
summarise(mean = sum(multiple) / sum(counts))
2 pour la réponse № 2
library(plyr)
ddply(.data = df,.variables = c("variable"),
function(x){sum(x$mean*x$counts)/sum(x$counts)})