我做了一个实验,参与者在两个不同的条件下与另一个参与者成对解决了一项任务。然后,每个参与者都获得了他们单独完成任务(得分)的得分,但是他们也得到了他们一起做得如何(得分)得分。重要的是,这些配对经历了不同程度的试验,有时试验中缺少一对成员(请注意)。但是,即使某个成员在试验中缺失,它仍然可以为该对得分做出贡献。
我有一个类似于下面的数据框:
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
如果有人可以提供帮助,你将度过我的一天!
答案 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