我对如何使用R中的纵向数据绘制特定于主题的图有疑问。
我的数据具有以下格式:
Id x0 x1 x2
1 2 5 6
2 2 3 2
3 6 4 3
Id是患者ID,x是在时间点0、1和2上测量的变量。 我有一个向量z,它代表时间:
z <- c(0, 3, 6)
因此,在时间点0上测量x0,在时间点3上测量x1,在时间点6上测量x2。
我想创建三个不同的抓图,所以每个人一个。我想要时间,所以x轴上的z向量。 y轴应包含x的值。 如何在R中执行此操作?
我希望我的问题很清楚,因为很难清楚地解释它。
先谢谢您。
丽莎
答案 0 :(得分:0)
源数据:
patient_data <- read.table(header = TRUE, text = "
Id x0 x1 x2
1 2 5 6
2 2 3 2
3 6 4 3")
在这里,我将您指定的时间值绑定到第一个表中的列名:
time_names = names(patient_data)
z <- data.frame(stringsAsFactors = FALSE,
time_val = c(0, 3, 6),
time_lab = time_names[2:length(time_names)]
)
现在将两者与图形连接起来:
library(dplyr); library(ggplot2)
patient_data %>%
tidyr::gather(time_lab, value, -Id) %>%
left_join(z) %>%
ggplot(aes(time_val, value)) +
geom_line() +
facet_wrap(~Id)