重塑/重组数据的最佳方法是什么?


12

我是实验室(志愿者)的研究助理。我和一小群人被要求进行数据分析,以从大型研究中提取一组数据。不幸的是,这些数据是通过某种在线应用程序收集的,并且没有编程为以最可用的形式输出数据。

下图说明了基本问题。有人告诉我这叫做“重塑”或“重组”。

问题:从图1到图2进入具有超过10k条目的大数据集的最佳过程是什么?

这是一个示例,实际文件有超过1万个条目。 我已经对颜色进行了编码,以帮助提高清晰度

这就是所有需要转换成的东西。


1
请将此问题分为两个独立的问题,并提供示例数据(除非相关,否则您也可以省略背景)。大致而言,在(1)上,您需要查找一个映射,然后合并以附加数字。(2)高度取决于您要执行的操作类型;对于这种类型的事情流行的R程序包包括data.tabledplyrplyr,和reshape2-我建议避免Excel和数据透视表如果可能的话。
Max Ghenis 2014年

我猜想您的数据清理问题比您提出的一般性问题所涵盖的问题还要广泛。您可能需要查看OpenRefine.org。一些视频和下载可能会对您在分析的这一部分有所帮助。
约翰·

3
这个问题似乎离题,因为它是关于基本数据的清理和组织,而不是统计。
尼克·史陶纳

2
我想说这不是题外话,因为清理数据(使用该过程可能是“基本的”)对于使用它至关重要。这是更大问题的一部分。
shadowtalker 2014年

2
@ NickStauner,IIRC我投票关闭为“不清楚/需要更多信息”,而不是题外话。在我看来,数据清理在统计数据的范围内是可以写的,尽管我认识到好的人可能会不同意,但我认为这样的问题可能是热门话题。想想看,我们有一个数据,清洁标签,与这些CV主题:123,和4
gung-恢复莫妮卡

Answers:


12

正如我在评论中指出的那样,问题中没有足够的细节来提出真正的答案。由于即使您需要找到正确的术语并提出问题也需要帮助,所以我可以概括地说一下。

2

从某种意义上讲,数据清理可以在任何软件中完成,并且可以使用Excel或R进行。这两种选择都有其优缺点:

  • Excel: Excel几乎肯定是数据清理的最常见选择(请参阅R fortunes#59 pdf)。统计学家也认为这是一个糟糕的选择。主要原因是很难确保您已捕获所有内容,或确保已对所有内容进行了相同的处理,并且没有记录所做更改的记录,因此您以后无法重新查看这些更改。使用Excel的好处是可以更轻松地查看正在执行的操作,并且您不必了解太多就可以进行更改。(统计学家会认为后者是一个额外的缺点。)
  • R: R将需要陡峭的学习曲线。如果您对R或编程不是很熟悉,那么可以在Excel中快速而轻松地完成的事情将使您难以尝试在R中进行。另一方面,如果您不得不再次进行此操作,那么学习将会花费的时间。此外,编写和保存代码以清除R中的数据的能力将减轻上面列出的缺点。以下是一些链接,这些链接将帮助您开始使用R中的这些任务:

    您可以在Stack Overflow上获得很多好的信息:

    Quick-R也是宝贵的资源:

    使数字进入数字模式:

    了解R的另一个宝贵资源是UCLA的统计信息帮助网站

    最后,您总是可以通过良好的旧Google找到很多信息:


更新:当每个“学习单位”(在您的情况下,是一个人)进行多次测量时,这是关于数据集结构的常见问题。如果每个人都有一行,则您的数据被认为是“宽”格式的,但是例如,您的响应变量必定会有多列。另一方面,您的响应变量只能只有一列(结果是每个人有多行),在这种情况下,您的数据被称为“长”格式。在这两种格式之间移动通常被称为“重塑”数据,尤其是在R世界中。

  • 为此,标准的R函数是?reshape。有一个指南使用reshape()的加州大学洛杉矶分校的统计帮助网站。
  • 许多人认为reshape很难合作。 Hadley Wickham提供了一个名为reshape2的软件包,该软件包旨在简化该过程。哈德利的个人网站reshape2是这里,快速-R的概述是在这里,而且有一个非常漂亮的教程在这里
  • 因此,关于如何重塑数据有很多问题。它们中的大多数都是从宽到长,因为这通常是数据分析师所面临的。您的问题是从长到宽,这是不常见的,但是与此相关的线程仍然很多,您可以通过此搜索浏览它们。
  • 如果您决心要使用Excel进行此操作,那么这里有一个有关为Excel编写VBA宏以复制重塑功能的线程:使用VBA在Excel中融化/重塑吗?

2
这个问题和这个答案很好地说明了为什么对几乎所有类型的研究而言,编程素养越来越必要。我将为这个问题写一个更完整的答案,我也将在博客上发布该答案,但是我想在忘记之前得到此评论。
shadowtalker 2014年

2
我在某种程度上同意,但是“必要的”和“任何类型的研究”要走得更远。许多学科并不经常处理脏数据,许多领先的研究人员从不需要接触过编程语言。
Behacad 2014年

哇,谢谢大家 我将需要一些时间来处理和整合所有这些信息,这对我来说是非常新的。似乎我对我的问题有些疑惑……想象一下,自己在不了解其语言/文化的情况下落入异国,这就是我和他的数据。感谢您抽出宝贵的时间进行回复。
Wilkoe 2014年

我添加了一个编辑,以期澄清我的第一个问题,尽管该问题似乎已经结束。
Wilkoe 2014年

这个问题已经关闭,@ user48538,并且不幸的是,此版本比以前的版本更偏离主题。如果您有1万行,则绝对不想在Excel中尝试执行此操作。您确实必须使用R或类似的编程软件。具体操作的名称是将您的数据集从“长”整形为“宽”,我将为您添加更多链接。此外,如果您是一名本科生志愿者,几乎没有统计或编程背景,那么将此项任务分配给您的任何人(恕我直言)都是非常不负责任的。这绝对不是您的任务。
gung-恢复莫妮卡

0

尝试使用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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.