R 连接ggplot2中直线图的平均点
我有一个包含以下列的样本数据集:PATIENTID(患者ID)、VISITNUMBER(他们到医院的就诊次数)、TIME(自首次就诊以来的时间)和HEALTH(他们的健康状况)。我正试图描绘一段时间后的健康状况 这是我在R中的代码:R 连接ggplot2中直线图的平均点,r,ggplot2,plot,R,Ggplot2,Plot,我有一个包含以下列的样本数据集:PATIENTID(患者ID)、VISITNUMBER(他们到医院的就诊次数)、TIME(自首次就诊以来的时间)和HEALTH(他们的健康状况)。我正试图描绘一段时间后的健康状况 这是我在R中的代码: # data structure PATIENTID <- c(126, 126, 126, 255, 255, 389, 389, 389, 389, 389, 470, 470, 470) VISITNUMBER <- c(1, 2, 3, 1, 2
# data structure
PATIENTID <- c(126, 126, 126, 255, 255, 389, 389, 389, 389, 389, 470, 470, 470)
VISITNUMBER <- c(1, 2, 3, 1, 2, 1, 2, 3, 4, 5, 1, 2, 3)
TIME<- c(0, 4, 6, 0, 3, 0, 1, 2, 3, 4, 0, 1, 2)
HEALTH <- c(0.333, 0.452, 0.468, 0.571, 0.522, 0.444, 0.452, 0.431, 0.510, 0.532, 0.214, 0.333, 0.400)
mydata <- data.frame(PATIENTID, VISITNUMBER, TIME, HEALTH)
# converting patient ID and visit number to factor
mydata$PATIENTID <- factor(mydata$PATIENTID)
mydata$VISITNUMBER <- factor(mydata$VISITNUMBER)
# creating a spagetti plot of health over time
sp_HEALTH <- ggplot(data = mydata, aes(TIME, HEALTH, group=PATIENTID))
sp_HEALTH +
geom_line() +
stat_smooth(aes(group=1), method = "lm", se = FALSE) +
stat_summary(aes(group=1), geom = "point", fun.y = mean,
shape = 17, size = 3, col = "red")
数据结构
PATIENTID也许更容易使用
dplyr::mutate
计算平均值,然后为患者和平均值添加单独的几何值
library(dplyr)
library(ggplot2)
mydata %>%
mutate(PATIENTID = factor(PATIENTID)) %>%
group_by(TIME) %>%
mutate(MEAN = mean(HEALTH)) %>%
ungroup() %>%
ggplot() +
geom_line(aes(TIME, HEALTH, group = PATIENTID)) +
geom_line(aes(TIME, MEAN), color = "blue") +
geom_point(aes(TIME, MEAN), color = "red", size = 3, shape = 17)
或者您可以使用geom=“line”
添加第二个stat\u摘要。注意在这两种情况下,geom中如何使用aes()
,而不是ggplot()
这是否回答了您的问题?
mydata %>%
ggplot() +
geom_line(aes(TIME, HEALTH, group=PATIENTID)) +
stat_summary(aes(TIME, HEALTH), geom = "point", fun = mean, shape = 17, size = 3, col = "red") +
stat_summary(aes(TIME, HEALTH), geom = "line", fun = mean, col = "blue")