我有一个看起来像这样的数据集(由于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
的选择。
答案 0 :(得分:2)
我们可以做到
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))
答案 1 :(得分:0)
我们可以使用<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
删除具有any
值的组。
要在基数R中执行此操作,我们可以使用Testing_Condition == 1
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