当前位置:  开发笔记 > 编程语言 > 正文

长而宽的数据 - 何时使用什么?

如何解决《长而宽的数据-何时使用什么?》经验,为你挑选了1个好方法。

我正在将来自不同数据集的数据编译成一个数据集进行分析.我将进行数据探索,尝试不同的事情来找出数据中可能隐藏的规则,因此我目前没有特定的方法.现在我想知道我是否应该将数据编译成长格式或宽格式.

我应该使用哪种格式,为什么?

我理解数据可以从长到宽重新形成,反之亦然,但仅仅存在这种功能意味着有时需要重新塑造,这反过来意味着特定的格式可能更适合于某个任务.那么我什么时候需要哪种格式?为什么?

我不是在问性能问题.其他问题已经涉及到这一点.



1> user295691..:

Hadley Wickham的Tidy数据论文,以及tidyr他(最新)实现其原则的软件包,是一个很好的起点.

这个问题的粗略答案是,在处理过程中,数据应该总是很长,并且只能为了显示目的而加宽.但要谨慎,因为这里"长"更多的是指"整洁",而不是纯粹的长形式.

例子

mtcars数据集为例.这已经是整齐的形式,因为每行代表一个观察.所以"延长"它,得到这样的东西

        model type   value
1 AMC Javelin  mpg  15.200
2 AMC Javelin  cyl   8.000
3 AMC Javelin disp 304.000
4 AMC Javelin   hp 150.000
5 AMC Javelin drat   3.150
6 AMC Javelin   wt   3.435

适得其反; mpg并且cyl无法以任何有意义的方式进行比较.

获取ChickWeight数据集(长格式)并将其转换为时间宽

require(tidyr)
ChickWeight %>% spread(Time, weight)
   Chick Diet  0  2  4  6   8  10  12  14  16  18  20  21
1     18    1 39 35 NA NA  NA  NA  NA  NA  NA  NA  NA  NA
2     16    1 41 45 49 51  57  51  54  NA  NA  NA  NA  NA
3     15    1 41 49 56 64  68  68  67  68  NA  NA  NA  NA
4     13    1 41 48 53 60  65  67  71  70  71  81  91  96
5      9    1 42 51 59 68  85  96  90  92  93 100 100  98
6     20    1 41 47 54 58  65  73  77  89  98 107 115 117
7     10    1 41 44 52 63  74  81  89  96 101 112 120 124
8      8    1 42 50 61 71  84  93 110 116 126 134 125  NA
9     17    1 42 51 61 72  83  89  98 103 113 123 133 142
10    19    1 43 48 55 62  65  71  82  88 106 120 144 157
11     4    1 42 49 56 67  74  87 102 108 136 154 160 157
12     6    1 41 49 59 74  97 124 141 148 155 160 160 157
13    11    1 43 51 63 84 112 139 168 177 182 184 181 175
...

提供可能有用的可视化,但是出于数据分析的目的,非常不方便,因为计算诸如增长率之类的事情变得麻烦.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有