У меня очень большой набор данных с несколькими столбцами, но я выберу только 2 столбца: Уровень образования родителей и Пол.
parent_edu gender n
<chr> <chr> <int>
1 associate's degree female 116
2 associate's degree male 106
3 bachelor's degree female 63
4 bachelor's degree male 55
5 high school female 94
6 high school male 102
7 master's degree female 36
8 master's degree male 23
9 some college female 118
10 some college male 108
11 some high school female 91
12 some high school male 88
С этого момента мне нужно использовать функцию count
для создания нового столбца n , который подсчитывает, сколько женщин имеют родителей с таким уровнем образования и сколько мужчин имеют родители с таким уровнем образования.
student1 %>%
count(parent_edu, gender) %>%
Последний шаг - попытка получить последний столбец, который имеет средние значения в пределах этих разных уровней образования для разных полов. Так, например, у нас есть «какой-то колледж», и есть 52% женщин и 48% мужчин, а затем, возможно, «средняя школа» и 47% женщин и 53% мужчин. До сих пор я неэффективно использую функцию mutate
следующим образом:
student1 %>%
count(parent_edu, gender) %>%
mutate(percentage =
Может кто-нибудь немного подсказать мне, какое уравнение мне следует ввести там? Или используйте pipe
для добавления каких-либо других функций? Окончательный результат должен выглядеть следующим образом:
parent_edu gender n percentage
<chr> <chr> <int> <dbl>
associate's degree female 116 0.52
associate's degree male 106 0.48
bachelor's degree female 63 0.53
bachelor's degree male 55 0.47
high school female 94 0.48
high school male 102 0.52
master's degree female 36 0.61
master's degree male 23 0.39
some college female 118 0.52
some college male 108 0.48
Включая dput:
df <- structure(list(parent_edu = c("associate's degree", "associate's degree",
"bachelor's degree", "bachelor's degree", "high school", "high school",
"master's degree", "master's degree", "some college", "some college"
), gender = c("female", "male", "female", "male", "female", "male",
"female", "male", "female", "male"), n = c(116, 106, 63, 55,
94, 102, 36, 23, 118, 108)), row.names = c(NA, -10L), class = c("tbl_df",
"tbl", "data.frame"))