Это мой первый вопрос по stackoverlow, пожалуйста, исправьте меня, если я не соблюдаю правильные протоколы вопросов.
Я пытаюсь создать несколько графиков для данных, которые были собраны за три момента времени (время 1, время 2, время 3), что соответствует X1 ..., X2 ... и X3 ...в начале названия столбцов.Графики также отделены столбцом $ Group от фрейма данных.
У меня нет проблем при создании графиков, у меня просто много переменных (~ 170), и я хочу сравнить время 1 со временем 2, время 2 против время 3 и т. Д., Поэтому я пытаюсь создать ярлык длязапускать такой код, а не вводить каждый из них по отдельности.
Как указано выше, я создал имена переменных, такие как X1 ... X2 ..., которые указывают время, когда переменная была записана, т.е.X1BCSTCAT = время 1;X2BCSTCAT = время 2;X3BCSTCAT = время 3. Вот небольшой пример того, как выглядят мои данные:
df <- structure(list(ID = structure(1:6, .Label = c("101","102","103","118","119","120"), class = "factor"),
Group = structure(c(1L,1L,1L,2L,2L,2L), .Label = c("C8","TC"), class = "factor"),
Wave = structure(c(1L, 2L, 3L, 4L, 1L, 2L), .Label = c("A","B","C","D"), class = "factor"),
Yr = structure(c(1L, 2L, 1L, 2L, 1L, 2L), .Label = c("3","5"), class = c("ordered", "factor")),
Age.Yr. = c(10.936,10.936, 9.311, 10.881, 10.683, 11.244),
Training..hr. = c(10.667,10.333, 10.667, 10.333, 10.333, 10.333),
X1BCSTCAT = c(-0.156,0.637,-1.133,0.637,2.189,1.229),
X1BCSTCR = c(0.484,0.192, -1.309, 0.912, 1.902, 0.484),
X1BCSTPR = c(-1.773,0.859, 0.859, 0.12, -1.111, 0.12),
X2BCSTCAT = c(1.006, -0.379,-1.902, 0.444, 2.074, 1.006),
X2BCSTCR = c(0.405, -0.457,-1.622, 1.368, 1.981, 0.168),
X2BCSTPR = c(-0.511, -0.036,2.189, -0.036, -0.894, 0.949),
X3BCSTCAT = c(1.18, -1.399,-1.399, 1.18, 1.18, 1.18),
X3BCSTCR = c(0.967, -1.622, -1.622,0.967, 0.967, 1.255),
X3BCSTPR = c(-1.282, -1.282, 1.539,1.539, 0.792, 0.792)),
row.names = c(1L, 2L, 3L, 4L, 5L,8L), class = "data.frame")
Вот некоторый рабочий код для создания одного графика с использованием ggplot для данных времени 1 против времени 2 для одной переменной:
library(ggplot2)
p <- ggplot(df, aes(x=df$X1BCSTCAT, y=df$X2BCSTCAT, shape = df$Group, color = df$Group)) +
geom_point() + geom_smooth(method=lm, aes(fill=df$Group), fullrange = TRUE) +
labs(title="BCSTCAT", x="Time 1", y = "Time 2") +
scale_color_manual(name = "Group",labels = c("C8","TC"),values = c("blue", "red")) +
scale_shape_manual(name = "Group",labels = c("C8","TC"),values = c(16, 17)) +
scale_fill_manual(name = "Group",labels = c("C8", "TC"),values = c("light blue", "pink"))
Так что я действительно пытаюсь создать какой-то ярлык, где R будет циклически проходить и сопоставлять имена переменных X1 ... против X2 ... и так далее, и создавать графики.Я предполагаю, что должен быть какой-то способ построения графика на основе сопоставления номеров столбцов, например, df [, 7] vs df [, 10] и повторение этого процесса или построение графиков путем фактического сопоставления имен (где единственная разница в именах переменных - это числокоторый указывает время).
Ранее я прошел цикл создания отдельных графиков с помощью функции lapply
, но понятия не имею, с чего начать, пытаясь сделать это.