Как мне получить только один парный балл за испытание (в каждом условии)? (R)

#r

#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 
  

Если кто-нибудь может помочь, вы сделаете мой день лучше!

Комментарии:

1. Как выводятся парные баллы?

Ответ №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
  

ПРАВКА2:

Забыл добавить условие

Ответ №2:

Попробуйте это. Тем не менее, пример, который вы нам показали, не соответствует предоставленным векторам, я полагаю? … Итак, как только вы рассчитаете «парный балл», мое решение сработает.

 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