dplyr中的测试特定行值

dplyr中的测试特定行值,r,dplyr,R,Dplyr,我有数据帧: df <- data.frame(subject=c('x','x','x','y','y','y','z','z','z'), trial=c(1,2,3,1,2,3,1,2,3), condition=c('A','A','B','B','B','B','A','A','A')) df看看这个答案: > df %>% group_by(subject) %>% filter(trial

我有数据帧:

df <- data.frame(subject=c('x','x','x','y','y','y','z','z','z'),
                 trial=c(1,2,3,1,2,3,1,2,3),
                 condition=c('A','A','B','B','B','B','A','A','A'))
df看看这个答案:

> df %>% group_by(subject) %>% filter(trial %in% c(1,3)) %>% ungroup() %>% group_by(subject) %>% filter(length(unique(condition)) == 2)
# A tibble: 2 x 3
# Groups:   subject [1]
  subject trial condition
  <chr>   <dbl> <chr>    
1 x           1 A        
2 x           3 B        
> 
>df%>%groupby(subject)%%>%filter(试用%c(1,3))%%>%ungroup()%%>%groupby(subject)%%>%filter(长度(唯一(条件))==2)
#一个tibble:2x3
#分组:受试者[1]
受试者的审判条件
1 x 1 A
2 x 3 B
> 

我想这就是您所描述的

df %>% group_by(subject) %>% 
  summarise(first_cond = condition[trial==1],
            third_cond = condition[trial==3]) %>% 
  filter(first_cond == "A",
         third_cond == "B")

# A tibble: 1 x 3
  subject first_cond third_cond
  <chr>   <chr>      <chr>     
1 x       A          B  
<代码>df%%>%组\u按(主题)%%% 总结(第一个条件=条件[试验==1], 第三个条件=条件[试验==3])%>% 过滤器(第一个条件==“A”, 第三个条件==“B”) #一个tibble:1 x 3 受试者第一次第二次第三次 1 x A B

如果每个
受试者的
试验
的每个值只有一个
条件
,那么这将起作用,因为逻辑是
试验
条件
的特定对,所以将数据与允许对表进行内部联接可能很有用,然后找到所有试验/条件都存在的受试者

库(dplyr)

fltr作为一个正确的答案必须写下来:有多种选择和知识!你太棒了!