R 中的整洁多变量数据

Tidy multivariate data in R

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

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

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

我知道 gather 和 separate 可能是有用的命令,但我不完全理解如何在这里使用它们,也不完全理解它们的语法。

例如:

gather(data,key, value) - 我认为 'key' 应该指的是我给变量的标题?并且 'value' 指的是与该变量相关的值所在的字段?如果是这样,'data' 指的是什么?我尝试将 table 的名称放在 'data' 字段中,但出现错误 'Error: Invalid column specification'.

有人可以帮忙吗?

这里必须有一个 dup,但是如果我们模拟一些数据:

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