У меня есть кадр данных, который выглядит примерно так:
df <- data.frame(
text = c(1:12),
person = c(c(rep("John", 6)), c(rep("Jane", 6))),
lemma = c("he", "he", "he", "his", "it", "she", "he",
"she", "she", "his", "it", "she"),
n = c(8, 8, 3, 7, 10, 4, 12, 9, 3, 4, 2, 8),
total_words = c(20, 49, 19, 39, 40, 30, 13, 30, 20, 34, 33, 15))
Что я пытаюсь сделать, так это получить сводную статистику, чтобы я мог определить относительную частоту каждого местоимения во всех текстах, созданных Джоном и Джейн соответственно. Если бы все, что я хотел, это подсчеты, это было бы легко:
library("dplyr")
library("tidyr")
df %>%
group_by(person, lemma) %>%
summarise_each(funs(sum), n) %>%
spread(lemma, n)
Однако, как я уже сказал, мне нужна относительная частота, поэтому мне нужно разделить приведенные выше результаты на общее количество слов во всех текстах, созданных Джоном и Джейн соответственно. Получить проценты также легко:
df %>%
group_by(lemma) %>%
summarise_each(funs(sum), n, total_words) %>%
mutate(percentage = n / total_words)
Я хочу заменить общее количество в первом примере процентами во втором примере, и именно здесь я застрял.