我正在尝试为我的数据集中的每个人(ID)创建一个时间序列图。
示例数据:
ID <- rep(c(2:5), each = 9, times = 4)
Attitude <- rep(c('A1', 'A2','A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'), 16)
Answer <- rep(1:5, length.out = 144)
time <- as.character(rep(c(0, 1, 3, 4), each = 9, times = 4))
first_answer <- rep(1:5, length.out = 144)
df <- data.frame(ID, Attitude, Answer, time, first_answer)
df$time <- as.character(df$time)
我目前使用的功能代码:
library(dplyr)
spaghetti_plot <- function(input, MV, item_level){
MV <- enquo(MV)
titles <- enquo(item_level)
input %>%
filter(!!(MV) == item_level) %>%
mutate(first_answer = first_answer) %>%
ggplot(.,aes( x = time, y = jitter(Answer), group = ID)) +
geom_line(aes(colour = first_answer)) +
labs(title = titles ,x = 'Time', y = 'Answer', colour = 'Answer given at time 0')
}
这给了我一个图表,其中每个人都有一条线,即所有个体的一个图(等于ID
的数量)。而不是这个,我希望有#panels = ID
的1个情节。例如,如果我有10个人的数据,我想有一个包含10个面板的图表。
我尝试使用facet_wrap
和facet_panel
来完成工作,但我还没有找到合适的解决方案。
facet_wrap(~ID)
最初是在SAS
中制作的。
EDIT2 解决方案在评论中。