#r #ggplot2
Вопрос:
Пояснение: Я хочу подсчитать количество событий, произошедших с каждым человеком до каждого возраста, группы по полу, и вычислить среднее значение. Так, например, в наборе данных четыре женщины. В возрасте 20 лет для всех женщин проводится в общей сложности 4 мероприятия, а в возрасте 21 года-всего 6 мероприятий. Поскольку в наборе данных 4 женщины, совокупное среднее (если это подходящее слово) в возрасте 20 лет составляет 1, в возрасте 21 года среднее значение составляет 1,5 и т. Д. Это то, что я хочу визуализировать в линейном графике.
У меня есть данные, которые выглядят так:
set.seed(123)
id <- rep(1:8, each = 5)
female <- (c(rep(1,20), rep(0, 20)))
age <- c(rep(20:24, 8))
dat <- data.frame(id, female, age)
dat$event <- sample(rep(c(1, 0), nrow(dat) / 2))
Где столбец id представляет уникальное лицо, являющееся женщиной, если женщина равна 1. Событие равно 1, если оно произошло, и 0, если оно не произошло.
Я хочу создать линейную диаграмму с совокупным средним значением событий, происходящих в каждом возрасте, сгруппированных по полу. То есть я хочу визуализировать совокупное количество событий, пережитых мужчинами в среднем в возрасте 20,…, 24 лет,и женщинами в среднем в возрасте 20,…, 24 лет.
Я надеюсь, что это имеет смысл и возможно достичь.
Комментарии:
1. можете ли вы уточнить, как вы хотите математически подсчитать «совокупное среднее значение событий» или «совокупное количество событий»? Я чувствую, что это будет своего рода ряд событий. Глядя на ответы Трина Космуса Нобеля и КоДа, можно сказать, что они оба сделали это по-разному. Так что, возможно, будет лучше, если вы сможете подробнее остановиться на этих двух словах.
Ответ №1:
Я полагаю, это то, что вы хотите — вычислить средние значения для групп с помощью dplyr.
library(dplyr)
library(ggplot2)
set.seed(123)
id <- rep(1:8, each = 5)
female <- (c(rep(1,20), rep(0, 20)))
age <- c(rep(20:24, 8))
dat <- data.frame(id, female, age)
dat$event <- sample(rep(c(1, 0), nrow(dat) / 2))
dat <- dat %>% group_by(female, age) %>%
summarise_at(vars(event),
list(mean = mean))
ggplot(dat, aes(x=age, y=mean, group=female))
geom_line(aes(linetype=as.character(female)))
geom_point()
Ответ №2:
Надеюсь, я правильно вас понял
library(dplyr) library(ggplot2) set.seed(123) id <- rep(1:8, each = 5) female <- (c(rep(1,20), rep(0, 20))) age <- c(rep(20:24, 8)) dat <- data.frame(id, female, age) dat$event <- sample(rep(c(1, 0), nrow(dat) / 2)) dats <- dat %>% arrange(age)%>% group_by(age, female)%>% mutate(cumul = cumsum(event))%>% summarise(mean(cumul)) ggplot(dats, aes(x = age, y =dats #r #ggplot2
Вопрос:
Пояснение: Я хочу подсчитать количество событий, произошедших с каждым человеком до каждого возраста, группы по полу, и вычислить среднее значение. Так, например, в наборе данных четыре женщины. В возрасте 20 лет для всех женщин проводится в общей сложности 4 мероприятия, а в возрасте 21 года-всего 6 мероприятий. Поскольку в наборе данных 4 женщины, совокупное среднее (если это подходящее слово) в возрасте 20 лет составляет 1, в возрасте 21 года среднее значение составляет 1,5 и т. Д. Это то, что я хочу визуализировать в линейном графике. У меня есть данные, которые выглядят так:set.seed(123) id <- rep(1:8, each = 5) female <- (c(rep(1,20), rep(0, 20))) age <- c(rep(20:24, 8)) dat <- data.frame(id, female, age) dat$event <- sample(rep(c(1, 0), nrow(dat) / 2))
Где столбец id представляет уникальное лицо, являющееся женщиной, если женщина равна 1. Событие равно 1, если оно произошло, и 0, если оно не произошло.
Я хочу создать линейную диаграмму с совокупным средним значением событий, происходящих в каждом возрасте, сгруппированных по полу. То есть я хочу визуализировать совокупное количество событий, пережитых мужчинами в среднем в возрасте 20,..., 24 лет,и женщинами в среднем в возрасте 20,..., 24 лет.
Я надеюсь, что это имеет смысл и возможно достичь.
Комментарии:
1. можете ли вы уточнить, как вы хотите математически подсчитать "совокупное среднее значение событий" или "совокупное количество событий"? Я чувствую, что это будет своего рода ряд событий. Глядя на ответы Трина Космуса Нобеля и КоДа, можно сказать, что они оба сделали это по-разному. Так что, возможно, будет лучше, если вы сможете подробнее остановиться на этих двух словах.
Ответ №1:
Я полагаю, это то, что вы хотите - вычислить средние значения для групп с помощью dplyr.
library(dplyr) library(ggplot2) set.seed(123) id <- rep(1:8, each = 5) female <- (c(rep(1,20), rep(0, 20))) age <- c(rep(20:24, 8)) dat <- data.frame(id, female, age) dat$event <- sample(rep(c(1, 0), nrow(dat) / 2)) dat <- dat %>% group_by(female, age) %>% summarise_at(vars(event), list(mean = mean)) ggplot(dat, aes(x=age, y=mean, group=female)) geom_line(aes(linetype=as.character(female))) geom_point()
Ответ №2:
Надеюсь, я правильно вас понял
mean(cumul)`, group = female))
geom_line(aes(linetype=as.character(female)))
Ответ №3:
Я забыл об одном важном и очевидном шаге: группируйтесь по идентификатору и вычисляйте итоговое значение!
Это то, чего я хотел достичь:
dat %>%
group_by(id) %>%
mutate(cumul = cumsum(event)) %>%
group_by(female, age) %>%
summarise(mean(cumul)) %>%
ggplot(aes(age, `mean(cumul)`, colour = as.factor(female)))
geom_line()