简体   繁体   English

根据特定条件删除参与者

[英]Remove participants based on a certain criteria

I have an experiment with numerous participants and their choices. 我有许多参与者及其选择的实验。 For simplicity, let's assume the following: 为简单起见,我们假设以下内容:

part<-c(1,1,1,2,2,2,3,3,3)
choice<-c(6,2,9,2,3,18,3,6,8)
study<-cbind(part,choice)

       part choice
 [1,]    1      6
 [2,]    1      2
 [3,]    1      9
 [4,]    2      2
 [5,]    2      3
 [6,]    2     18
 [7,]    3      3
 [8,]    3      6
 [9,]    3      8

Now, I would like to entirely remove certain participants. 现在,我想完全删除某些参与者。 For example those who made at least one choice above 10. So in the example above, because participant 2, made one choice above 10, I entirely remove him: The final data should look: 例如,那些在10以上做出至少一项选择的人。因此,在上面的示例中,由于参与者2在10以上做出了一项选择,所以我将其完全删除:最终数据应如下所示:

      part choice
[1,]    1      6
[2,]    1      2
[3,]    1      9
[4,]    3      3
[5,]    3      6
[6,]    3      8

How can I do it? 我该怎么做?

Thanks! 谢谢!

library(dplyr)
 study %>% 
   group_by(part) %>% 
   filter(max(choice)<10)
# A tibble: 6 x 2
# Groups:   part [2]
   part choice
  <dbl>  <dbl>
1     1      6
2     1      2
3     1      9
4     3      3
5     3      6
6     3      8
removed = which(study[ , 2]>10);
study = study[!(study[ , 1] %in% study[removed, 1]), ];

study
     part choice
[1,]    1      6
[2,]    1      2
[3,]    1      9
[4,]    3      3
[5,]    3      6
[6,]    3      8

with this code you don't even need to install any package. 使用此代码,您甚至不需要安装任何软件包。

Using R base, without need of loading packages. 使用R base,无需加载软件包。 The example uses variable names, instead of position, for better overview of the solution. 该示例使用变量名称代替位置,以更好地了解解决方案。

# Create object to be used in dataframe.
part   <- c(1,1,1,2,2,2,3,3,3)
choice <- c(6,2,9,2,3,18,3,6,8)
# Create dataframe.
study  <- data.frame(part, choice)

# Find rows in column [study$choice]
find_rows <- which(study$choice > 10)
# Find participant that matches [find_rows]
participant_to_be_deleted <- study[find_rows,1]

# Remove all rows that has found participant in [study$part].
result <- study[study$part!=participant_to_be_deleted,]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM