如何在带有嵌套变量的长格式数据集中告诉ggplot几行属于一个案例
How to tell ggplot several rows belong to one case in a long format dataset with nested variables
我有一个长格式的数据集,其中每个参与者在实验中经历两个条件(重复测量),每个条件由多个试验组成。参与者每 condition/group 得分 (Score
),但每次试验也有个人反应时间 (RT
)。
数据集如下所示:
library(tidyverse)
df <- data.frame(ID = c(rep(1, 6), rep(2, 6), rep(3, 6)),
Gender = factor(c(rep("M", 6), rep("M", 6), rep("F", 6))),
Group = factor(c(rep(c(rep(0, 3), rep(1, 3)), 3))),
Trial = factor(rep(c(1:3), 6)),
Score = c(rep(10, 3), rep(20, 3), rep(15, 3), rep(25, 3), rep(18, 3), rep(12, 3)),
RT = runif(18)
)
我想做一些绘图来探索数据并专注于分数的分析,这在这个阶段更简单。我遇到的问题是 Score
中的每一行并不真正代表一个案例,因为它是 RT
以某种方式“引导”数据集的行划分的那个。要清楚,我的问题是,例如,如果我想绘制一个条形图,每个案例的计数为 Gender
,我最终会得到 18 个案例的总和,而不是 3 个案例,因为实际上是这样。
ggplot(data=df, aes(Gender)) +
geom_bar()
我认为简化数据集的一种方法可能是每个 RT 行已经代表每个参与者 mean/median,但这需要将我的数据集一分为二,我更喜欢这是最后一个选项。此外,这不会解决我的问题,因为每个参与者将有两个 Gender
。
我知道这必须很简单,但我在制定这个问题时遇到了问题,因为我仍然是 R 的新手。
感谢任何帮助!
因为每个 ID
有多行来计算性别,所以在绘图之前只为每个 ID
和 Gender
保留唯一值。所以你得到这样的东西:
library(dplyr)
library(ggplot2)
df %>% distinct(ID, Gender) %>% ggplot(aes(Gender)) + geom_bar()
我有一个长格式的数据集,其中每个参与者在实验中经历两个条件(重复测量),每个条件由多个试验组成。参与者每 condition/group 得分 (Score
),但每次试验也有个人反应时间 (RT
)。
数据集如下所示:
library(tidyverse)
df <- data.frame(ID = c(rep(1, 6), rep(2, 6), rep(3, 6)),
Gender = factor(c(rep("M", 6), rep("M", 6), rep("F", 6))),
Group = factor(c(rep(c(rep(0, 3), rep(1, 3)), 3))),
Trial = factor(rep(c(1:3), 6)),
Score = c(rep(10, 3), rep(20, 3), rep(15, 3), rep(25, 3), rep(18, 3), rep(12, 3)),
RT = runif(18)
)
我想做一些绘图来探索数据并专注于分数的分析,这在这个阶段更简单。我遇到的问题是 Score
中的每一行并不真正代表一个案例,因为它是 RT
以某种方式“引导”数据集的行划分的那个。要清楚,我的问题是,例如,如果我想绘制一个条形图,每个案例的计数为 Gender
,我最终会得到 18 个案例的总和,而不是 3 个案例,因为实际上是这样。
ggplot(data=df, aes(Gender)) +
geom_bar()
我认为简化数据集的一种方法可能是每个 RT 行已经代表每个参与者 mean/median,但这需要将我的数据集一分为二,我更喜欢这是最后一个选项。此外,这不会解决我的问题,因为每个参与者将有两个 Gender
。
我知道这必须很简单,但我在制定这个问题时遇到了问题,因为我仍然是 R 的新手。
感谢任何帮助!
因为每个 ID
有多行来计算性别,所以在绘图之前只为每个 ID
和 Gender
保留唯一值。所以你得到这样的东西:
library(dplyr)
library(ggplot2)
df %>% distinct(ID, Gender) %>% ggplot(aes(Gender)) + geom_bar()