我有一个具有以下结构的数据集:
行是实验的参与者,列是他们回答的问题。所有标题为EC的栏目都属于一种类型的任务,所有名为ART的栏目都属于另一类等。
将表读入R后,如何整理数据,使属于一种任务的所有问题都保存为单个变量?我基本上希望将每种类型的任务(所有参与者为该任务提供的所有答案)保存为单独的变量,以后我可以进行统计分析。
我知道收集和分离可能是有用的命令,但我不完全理解如何在这里使用它们并且我不完全理解它们的语法。
例如:
收集(数据,密钥,值) - 我认为'密钥'应该引用我给变量的标题? 'value'是指与该变量相关的值所在的字段?如果是这样,“数据”是指什么?我尝试将表的名称放在“数据”字段中,但收到错误消息“错误:列规范无效”。
有人可以帮忙吗?
答案 0 :(得分:1)
必须有一个重复,但如果我们模拟一些数据:
library(tidyr)
library(purrr)
library(dplyr)
这部分只是重新创建一个你似乎拥有的数据集。没有必要为解决方案理解这一点。
df <- map(1:16, ~sample(0:4, 10, replace=TRUE))
df <- as.data.frame(df)
df <- set_names(df, c(sprintf("EC%d", 1:4), sprintf("ART%d", 1:4), sprintf("IC%d", 1:4), sprintf("AQ%d", 1:4)))
df <- mutate(participant=sprintf("id%d", 10))
这里df
最终看起来像是什么:
df
## EC1 EC2 EC3 EC4 ART1 ART2 ART3 ART4 IC1 IC2 IC3 IC4 AQ1 AQ2 AQ3 AQ4 participant
## 1 4 2 1 4 2 2 3 1 4 2 0 4 3 0 4 2 id10
## 2 3 4 1 0 1 1 1 2 3 4 0 4 2 1 4 3 id10
## 3 4 2 3 2 0 1 3 4 4 1 2 4 0 1 0 4 id10
## 4 1 4 0 3 2 3 1 2 0 2 1 1 1 3 3 1 id10
## 5 2 3 1 1 2 4 1 0 3 0 3 3 0 1 4 2 id10
## 6 4 0 1 1 1 4 2 0 3 0 1 3 3 3 2 0 id10
## 7 3 1 1 1 4 1 1 0 0 2 1 4 3 2 2 3 id10
## 8 0 4 0 1 4 4 2 4 0 1 1 3 1 1 4 0 id10
## 9 0 0 4 4 0 1 0 3 1 0 2 3 4 4 1 0 id10
## 10 2 0 2 1 4 2 3 4 3 4 4 4 3 0 4 4 id10
这似乎是您的数据格式。
如果是这样,那么,我认为这就是你想要的:
df <- gather(df, answer, value, -participant)
head(df, 20)
## participant answer value
## 1 id10 EC1 4
## 2 id10 EC1 3
## 3 id10 EC1 4
## 4 id10 EC1 1
## 5 id10 EC1 2
## 6 id10 EC1 4
## 7 id10 EC1 3
## 8 id10 EC1 0
## 9 id10 EC1 0
## 10 id10 EC1 2
## 11 id10 EC2 2
## 12 id10 EC2 4
## 13 id10 EC2 2
## 14 id10 EC2 4
## 15 id10 EC2 3
## 16 id10 EC2 0
## 17 id10 EC2 1
## 18 id10 EC2 4
## 19 id10 EC2 0
## 20 id10 EC2 0
您可能有也可能没有该主题的ID变量,但我们不知道,因为我们确实没有您的数据。