R中的整洁多变量数据

时间:2016-10-22 18:00:06

标签: r tidy

我有一个具有以下结构的数据集:

example of dataset

行是实验的参与者,列是他们回答的问题。所有标题为EC的栏目都属于一种类型的任务,所有名为ART的栏目都属于另一类等。

将表读入R后,如何整理数据,使属于一种任务的所有问题都保存为单个变量?我基本上希望将每种类型的任务(所有参与者为该任务提供的所有答案)保存为单独的变量,以后我可以进行统计分析。

我知道收集和分离可能是有用的命令,但我不完全理解如何在这里使用它们并且我不完全理解它们的语法。

例如:

收集(数据,密钥,值) - 我认为'密钥'应该引用我给变量的标题? 'value'是指与该变量相关的值所在的字段?如果是这样,“数据”是指什么?我尝试将表的名称放在“数据”字段中,但收到错误消息“错误:列规范无效”。

有人可以帮忙吗?

1 个答案:

答案 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变量,但我们不知道,因为我们确实没有您的数据。