这是我在 stackoverlow 上的第一个问题,如果我没有遵循正确的问题协议,请纠正我。
我正在尝试为在三个时间点(时间 1、时间 2、时间 3)上收集的数据创建一些图表,这些时间点等于列名开头的 X1...、X2... 和 X3... . 这些图表也由数据框中的 $Group 列分隔。
我创建图表没有问题,我只有很多变量(~170),我想比较时间 1 与时间 2、时间 2 与时间 3 等,所以我正在尝试使用快捷方式来运行这种代码而不必单独输入每一个。
如上所述,我创建了变量名称,例如 X1...X2...,它表示记录变量的时间,即 X1BCSTCAT = time 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
函数创建单独的图表,但不知道从哪里开始尝试做这个。