我是实验室的研究助理(志愿者)。我和一个小组的任务是对从一项大型研究中提取的一组数据进行数据分析。不幸的是,这些数据是通过某种在线应用程序收集的,并且没有被编程为以最可用的形式输出数据。
下面的图片说明了基本问题。有人告诉我,这被称为“重塑”或“重组”。
问题:对于具有超过 10k 个条目的大型数据集,从图 1 到图 2 的最佳过程是什么?
我是实验室的研究助理(志愿者)。我和一个小组的任务是对从一项大型研究中提取的一组数据进行数据分析。不幸的是,这些数据是通过某种在线应用程序收集的,并且没有被编程为以最可用的形式输出数据。
下面的图片说明了基本问题。有人告诉我,这被称为“重塑”或“重组”。
问题:对于具有超过 10k 个条目的大型数据集,从图 1 到图 2 的最佳过程是什么?
正如我在评论中指出的那样,问题中没有足够的细节来制定真正的答案。由于您甚至需要帮助甚至找到正确的术语并提出您的问题,所以我可以简要概括一下。
您正在寻找的术语是数据清理。这是获取原始、格式不正确(脏)的数据并将其成形以进行分析的过程。更改和规范格式(“二”)以及重新组织行和列是典型的数据清理任务。
从某种意义上说,数据清理可以在任何软件中完成,可以使用 Excel 或 R 完成。这两种选择各有利弊:
R: R 需要陡峭的学习曲线。如果您对 R 或编程不是很熟悉,那么在 Excel 中可以非常快速轻松地完成的事情将会使您在 R 中尝试感到沮丧。另一方面,如果您必须再次这样做,那么学习将是时间花得很好。此外,编写和保存代码以清理 R 中的数据的能力将减轻上面列出的缺点。以下是一些链接,可帮助您开始在 R 中完成这些任务:
您可以在Stack Overflow上获得很多有用的信息:
Quick-R也是一种宝贵的资源:
让数字进入数字模式:
另一个了解 R 的宝贵资源是UCLA 的统计帮助网站:
最后,你总能在老旧的谷歌上找到很多信息:
更新:当您对每个“研究单位”(在您的情况下是一个人)进行多次测量时,这是关于数据集结构的常见问题。如果每个人都有一行,则称您的数据为“宽”形式,但是例如,您的响应变量必须有多个列。另一方面,您的响应变量可以只有一列(但结果是每人多行),在这种情况下,您的数据被称为“长”形式。在这两种格式之间移动通常被称为“重塑”数据,尤其是在 R 世界中。
reshape()
reshape
很难合作。 Hadley Wickham提供了一个名为reshape2的包,旨在简化该过程。Hadley 的 reshape2 个人网站在这里,Quick-R 概述在这里,这里有一个好看的教程。 尝试使用 R 进行以下操作:
> ddf
sess_id user_id quest response
1 1 a age 29
2 1 a satisfied st_agree
3 1 a gender male
4 1 a phone iphone
5 2 a age 29
6 2 a satisfied not_agree
7 2 a gender female
8 2 a phone iphone
9 3 b age 29
10 3 b satisfied agree
11 3 b gender male
12 3 b phone android
>
> library(reshape2)
> dcast(ddf, sess_id+user_id ~ quest, value.var='response')
sess_id user_id age gender phone satisfied
1 1 a 29 male iphone st_agree
2 2 a 29 female iphone not_agree
3 3 b 29 male android agree
在 Scala 中,这称为“爆炸”操作,可以在数据帧上完成。如果你的数据是一个rdd,你首先通过命令转换为dataFrame toDF
,然后使用.explode
方法。