R-如何基于两个变量子集数据



我有一个看起来像这样的数据集(由于 R而以较长格式(

 Participant      RT     Session    Testing_Condition
     1            352       1               0
     1            526       1               0
     1            624       1               0
     1            424       2               0
     1            356       2               0
     1            475       2               0
     2            256       1               1
     2            426       1               1
     2            562       1               1
     2            426       1               0
     2            526       2               0
     2            634       2               0

我只想在两个会话中选择具有Testing_Condition = 0的参与者。我知道如何进行子集,我只是不知道如何确保子集不包含一个会话中condition = 0中的参与者,而是在另一个会话中不包含参与者。我应该创建第三个变量,即其整体testing_condition的交界处或其他内容吗?如果是这样,我应该怎么做?

在这种情况下,我希望输出仅是participant 1的选择。

我们可以做

library(dplyr)
df1 %>%
     group_by(Participant) %>%
     filter(any(Testing_Condition[Session ==1]== 0) & 
           any(Testing_Condition[Session ==2] == 0))

也可以是

df1 %>% 
   group_by(Participant, Session) %>% 
   filter(all(Testing_Condition == 0)) %>% 
   group_by(Participant) %>%
   filter(all(1:2 %in% Session))

我们可以用Testing_Condition == 1删除具有any值的组。

为了在基本r中这样做,我们可以使用 ave

df[with(df, !ave(Testing_Condition == 1, Participant, FUN = any)), ]
#  Participant  RT Session Testing_Condition
#1           1 352       1                 0
#2           1 526       1                 0
#3           1 624       1                 0
#4           1 424       2                 0
#5           1 356       2                 0
#6           1 475       2                 0

dplyr相同的filter

可以实现
library(dplyr)
df %>%
  group_by(Participant) %>%
  filter(!any(Testing_Condition == 1))

最新更新