如何在每次试验中仅检索一对配对(在每种情况下)? (R)

时间:2016-10-09 21:20:15

标签: r

我做了一个实验,参与者在两个不同的条件下与另一个参与者成对解决了一项任务。然后,每个参与者都获得了他们单独完成任务(得分)的得分,但是他们也得到了他们一起做得如何(得分)得分。重要的是,这些配对经历了不同程度的试验,有时试验中缺少一对成员(请注意)。但是,即使某个成员在试验中缺失,它仍然可以为该对得分做出贡献。

我有一个类似于下面的数据框:

participant <- c(1,2,1,2,3,4,3,4,4,4,6,8)
pair <- c(1,1,1,1,2,2,2,2,2,2,3,3)
condition <- (1,1,2,2,1,1,2,2,1,2,2,1)
trial <- c(1,1,1,2,1,2,3,1,2,3,1,1)
score <- c(2,3,6,3,4,7,3,1,8,5,4,3)
data <- data.frame(participant, pair, trial, score)

participant pair Condition  trial  score   pair score
    1         1       1        1     2         5
    2         1       1        1     3         5
    1         1       2        2     6         9
    2         1       2        2     3         9
    3         2       1        1     4         11
    4         2       1        1     7         11
    3         2       2        2     3         4
    4         2       2        2     1         4
    4         2       1        3     8         12 (pls note)
    4         2       2        4     5         6  (pls note)
    6         3       2        1     4         8  (pls note)
    8         4       1        1     3         4  (pls note)

我想在每个试验中对配对水平进行分析,因此我只需要每对中每个试验的一个值。你们有没有人知道我如何从每次试验中只提取一对分数?

数据框应该看起来像这样:

 pair Condition trial  pair score
   1       1       1     5
   1       2       2     9
   2       1       1     11
   2       2       2     4
   2       1       3     12 
   2       2       4     6  
   3       2       1     8 
   4       1       1     4 

如果有人可以提供帮助,你将度过我的一天!

2 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西

data[!duplicated(data[,c(2,4)]),-c(1,5)]

编辑:

以下是与问题中打印的数据相同的更正数据

participant <- c(1,2,1,2,3,4,3,4,4,4,6,8)
pair <- c(1,1,1,1,2,2,2,2,2,2,3,4)
condition <- c(1,1,2,2,1,1,2,2,1,2,2,1)
trial <- c(1,1,2,2,1,1,2,2,3,4,1,1)
score <- c(2,3,6,3,4,7,3,1,8,5,4,3)
pair_score <- c(5, 5, 9, 9, 11, 11, 4, 4, 12, 6, 8, 4)
data <- data.frame(participant, pair, condition, trial, score, "pair score" = pair_score)

并在顶部运行代码为我提供了以下输出:

##    pair condition trial pair.score
## 1     1         1     1          5
## 3     1         2     2          9
## 5     2         1     1         11
## 7     2         2     2          4
## 9     2         1     3         12
## 10    2         2     4          6
## 11    3         2     1          8
## 12    4         1     1          4

EDIT2:

忘记添加条件

答案 1 :(得分:1)

试试这个。不过,我猜你给我们的例子与提供的载体不一致,我想? ...所以,一旦你计算出“配对分数”,我的解决方案就可以了。

participant <- c(1,2,1,2,3,4,3,4,4,4,6,8)
pair <- c(1,1,1,1,2,2,2,2,2,2,3,3)
condition <- c(1,1,2,2,1,1,2,2,1,2,2,1)
trial <- c(1,1,1,2,1,2,3,1,2,3,1,1)
score <- c(2,3,6,3,4,7,3,1,8,5,4,3)
pair_score <- c(5,5,9,9,11,11,4,4,12,6,8,4)
data <- data.frame(participant, pair, condition, trial, score, "pair.score" = pair_score )

unique_pairscore = unique( pair_score )

data2 <- data.frame("pair"=rep(NA,length(unique_pairscore)),
                    "condition"=rep(NA,length(unique_pairscore)),
                    "trial" = rep(NA,length(unique_pairscore)),
                    "pair.score"=unique_pairscore)

for(i in 1:nrow(data2)){
  data2[i,c("pair","condition","trial")]  <-data[ which(data[,"pair.score"] == data2[i,"pair.score"])[1],c("pair","condition","trial")]
}

data是:

   participant pair condition trial score pair.score
             1    1         1     1     2          5
             2    1         1     1     3          5
             1    1         2     1     6          9
             2    1         2     2     3          9
             3    2         1     1     4         11
             4    2         1     2     7         11
             3    2         2     3     3          4
             4    2         2     1     1          4
             4    2         1     2     8         12
             4    2         2     3     5          6
             6    3         2     1     4          8
             8    3         1     1     3          4

data2是:

  pair condition trial pair.score
     1         1     1          5
     1         2     1          9
     2         1     1         11
     2         2     3          4
     2         1     2         12
     2         2     3          6
     3         2     1          8