【发布时间】:2018-10-19 00:20:18
【问题描述】:
我有一个神经认知研究的数据。我们通过三个略有不同的调查来衡量结果,这些调查具有相同的参与者可以获得的可能分数范围。我的数据是长格式的——即每个参与者都有三行,变量points和outcome。变量outcome 表示在给定行(scd_gb、scd_rb 或scd_ab)中使用什么类型的调查来测量点。
id outcome points
1 scd_gb 20
1 scd_rb 15
1 scd_ab 3
2 scd_gb 6
2 scd_rb 18
2 scd_ab 15
我想创建一个散点图,其中 x 轴上有 scd_gb,y 轴上有 scd_gb 和 scd_rb,每个都有不同的颜色。
所以我有两个问题: 首先,我可以将子集相互绘制还是将数据转换为宽格式? 第二(一般而言),我可以将一个变量与其他两个变量进行对比吗?
我尝试了以下返回错误的代码。
library(ggplot2)
ggplot(SCD_long , aes(x = points(subset(SCD_long, outcome %in% c("scd_gb"))),
y = points(subset(SCD_long, outcome %in% c("scd_rb" , "scd_ab"))))) +
geom_point(aes(color = outcome), alpha = .5)
Error: Aesthetics must be either length 1 or the same as the data (606): colour, x, y
In addition: Warning messages:
1: In data.matrix(x) : NAs introduced by coercion
2: In data.matrix(x) : NAs introduced by coercion
3: In data.matrix(x) : NAs introduced by coercion
4: In data.matrix(x) : NAs introduced by coercion
我认为这两个问题都可以通过数据争论来解决。我想知道是否可以在不更改数据格式的情况下收到所需的绘图。
【问题讨论】:
-
(您为轴指定了两次
scd_gb。)如果您在 x 上一个(比如说)gb而在 y 上另一个两个,则表明它们之间存在配对。我在数据中看不到这样的配对。为了对这些进行散点图,需要与 x 上发生的事情和 y 上发生的事情之间存在明确的一对一关系。照原样,没有办法做到这一点,因为您有 2 个 x 和 4 个其他。也许您的意思是每个轴都是一个 id,点的颜色是结果?