首页 > 解决方案 > 您可以在多个级别进行过滤吗?

问题描述

我有这个名为“行为”的数据集(更大的数据集样本,每个会话中每个主题有 800 个 Stim.RT 和 Stim.ACC 值)

在此处输入图像描述

我想获得每个文本类别的总体平均 Stim.RT 和平均 Stim.Acc。例如,我通常会这样做:

Dataset<-Behavioral%>%
  select(Subject, Session, Stim.ACC, Stim.RT, Text) %>%
  group_by(Text) %>%
  summarize(mean.ac = mean(Stim.ACC), mean.RT = mean(Stim.RT))

它会返回如下内容:

在此处输入图像描述

唯一的问题是,在我取回第二张表之前,我想过滤掉 mean.ac 值小于 0.50 的所有主题-会话对。 IE。如果主题 1 的 mean.ac 在会话 1 中为 0.45,我希望删除他们的所有会话 1 值。

我试过这个:

Dataset<-Behavioral%>%
  select(Subject, Session, Stim.ACC, Stim.RT, Text) %>%
  group_by(Subject, Session) %>%
  summarize(mean.ac = mean(Stim.ACC), mean.RT = mean(Stim.RT))%>%
  group_by(Text)

我收到此错误:错误:列Text未知

标签: rdplyrfiltering

解决方案


library(dplyr)

Behavioral%>%
select(Subject, Session, Stim.ACC, Stim.RT, Text) %>%
group_by(Subject, Session) %>%
summarize(mean.ac = mean(Stim.ACC), mean.RT = mean(Stim.RT)) %>%
ungroup() %>%
filter(mean.ac >= 0.5) %>% 
select(Subject, Session) %>%
inner_join(Behavioral, by = c("Subject" = "Subject", "Session" = "Session")) %>%
select(Subject, Session, Stim.ACC, Stim.RT, Text) %>%
group_by(Text) %>%
summarize(mean.ac = mean(Stim.ACC), mean.RT = mean(Stim.RT)) %>%
ungroup()

所以你得到错误的原因是因为Text它不是group_by函数的一部分,当你summarise在 a 之后group_by,你得到的 tibble 中唯一的变量是你在中group_by创建的变量和变量summarise。所以在你的情况下,结果变量

Dataset<-Behavioral%>%
select(Subject, Session, Stim.ACC, Stim.RT, Text) %>%
group_by(Subject, Session) %>%
summarize(mean.ac = mean(Stim.ACC), mean.RT = mean(Stim.RT))

将是Subject, Session, mean.ac, mean.RT.

正因为如此,我根据您的要求过滤了何时,并且mean.ac >= 0.5只需要我编辑到原始数据集的和,以便包括满足条件的和。就像一个和。然后我继续计算每个帖子的and 。SubjectSessioninner_joinSubjectSessioninner_joinjoinfiltermean.acmean.RTTextinner_join


推荐阅读