【发布时间】:2017-08-10 06:18:46
【问题描述】:
因此,我尝试根据学生是否通过某项考试来为学生成绩的条形图着色。
为此,我读取了两个单独的 .csv 文件,并对数据进行了结构化,使其按某个变量排序。这是其中一个数据集的头部:
head(Y)
fName mid lab exam overall
1 OOJOE 50 94 77.5 77
2 JWTWB 45 50 60.5 54
3 XQXQA 65 78 69.0 71
4 PVTMX 35 84 30.5 47
5 ZZBDP 70 100 74.0 81
6 JVYMA 65 96 73.5 79
另一个数据集 (X) 包含有关学生出勤等的信息。 我为每个学生制作了一个箱线图,显示出勤率中位数(使用数据集 X),但我的总体目标是根据每个学生的总成绩是否为 40 或更高(来自数据集 Y)为箱线图着色。
我正在使用 ggplot...这是我迄今为止尝试过的:
ggplot(data=X,aes(x=fName, y=delay, group=fName)) +
geom_boxplot(color = Y$overall <40) +
scale_colour_manual(name = 'overall < 40', values = setNames(c('red','green'),c(T, F))) +
coord_flip()
但这只是告诉我这是一个无效的颜色名称...我也尝试过:
ggplot(data=X,aes(x=fName, y=delay, group=fName)) +
geom_boxplot(color = ifelse(Y$overall >= 40,'red','green')) +
coord_flip()
这确实将箱线图分成两种不同的颜色......但它没有正确地做到这一点(即,它没有将值> = 40红色和所有其他绿色......它似乎只是随机分配一些学生红色和一些绿色)。我怀疑它不起作用是因为ifelse 命令不能很好地与ggplot 配合使用,但我不确定。
关于如何解决这个问题有什么建议吗?
编辑: 下面是 X 的头部,只是为了展示延迟列的示例:
head(X)
fName Information fTime min.Time. delay
1 ARONR Course outline 2010-09-22T09:16:00Z 2010-09-20T20:21:00Z 1.5381944
2 ARONR Lab Dec 13 2010-12-11T17:21:00Z 2010-12-09T12:20:00Z 2.2090278
3 ARONR Lab Nov 1 2010-11-03T11:10:00Z 2010-10-28T17:21:00Z 5.7423611
4 ARONR Lab Nov 22 2010-11-22T14:16:00Z 2010-11-22T11:51:00Z 0.1006944
5 ARONR Lab Nov 29 2010-11-29T15:04:00Z 2010-11-25T18:00:00Z 3.8777778
6 ARONR Lab Nov 8 2010-11-10T11:07:00Z 2010-11-05T19:12:00Z 4.6631944
以下是一些仅涉及一名学生的附加数据,以帮助在通用键下进行合并: Y-数据集:
fName mid lab exam overall
ZZBDP 70 100 74.0 81
X-数据集:
fName Information fTime min.Time. delay
ZZBDP Lecture Dec 1 2010-12-01T13:02:00Z 2010-12-01T12:31:00Z 2.152778e-02 ZZBDP Lecture Dec 8 2010-12-08T08:49:00Z 2010-12-07T16:43:00Z 6.708333e-01
ZZBDP Lecture Nov 10 2010-11-10T11:14:00Z 2010-11-09T13:35:00Z 9.020833e-01
ZZBDP Lecture Nov 17 2010-11-17T18:25:00Z 2010-11-17T10:31:00Z 3.291667e-01
ZZBDP Lecture Nov 24 2010-11-24T09:23:00Z 2010-11-23T11:35:00Z 9.083333e-01
【问题讨论】:
-
什么是
delay?它不在您的 data.frame 中 -
延迟是来自 X 数据集的变量。它是一个浮点数(例如:1.5381944),用于衡量学生访问在线材料所花费的时间......这个特定问题的箱线图显示了每个学生的延迟中位数(而不是上面提到的出勤率)