我只是好奇,不管解释性如何,以长格式或宽格式存储数据是否更高效?我已经使用object.size()
来确定内存中的大小,但它们并没有显着差异(长度在大小上略高效),并且该值只是和估计的。宽格式或长格式数据的效率更高吗?
在原始尺寸之上,我还想知道哪种格式在建模时被操作的效率更高。
我只是好奇,不管解释性如何,以长格式或宽格式存储数据是否更高效?我已经使用object.size()
来确定内存中的大小,但它们并没有显着差异(长度在大小上略高效),并且该值只是和估计的。宽格式或长格式数据的效率更高吗?
在原始尺寸之上,我还想知道哪种格式在建模时被操作的效率更高。
两个不同matrix
ES的内存使用情况应该是相同的:
> object.size(long <- matrix(seq(10000), nrow = 1000))
40200 bytes
> object.size(square <- matrix(seq(10000), nrow = 100))
40200 bytes
在效率的任何差异将通过低效率,使用R相形见绌,所以几乎不需要考虑,如果它们甚至可测量。
的情况是一个非常data.frame
不同,因为它是作为vector
的list
A S实现:
> object.size(as.data.frame(long))
41704 bytes
> object.size(as.data.frame(square))
50968 bytes
这样做的时候效率将取决于正是你想做的事。
对于矩阵来说,绝对没有区别。对于该矩阵的数据帧也是如此。改造矩阵的形状仅仅是分配尺寸属性...大部分。
如果您打算以某种方式对数据进行分类并添加更多信息,那么宽度通常会更有效的存储方式,但长期处理通常会更有效。这不是长格式的必要属性,它的空间效率较低,但通常情况下,在广泛的列名中将会有一个复合变量描述,这些描述将被分隔开来,并给出一个新列或多个长列。因此,这些裁员将会占用更多的空间。在处理方面,更容易汇总长数据或选择特定案例进行删除,而不是使用具有多元列指定的宽格式。
如果数据不是完美的矩形(或立方体等),long也是最好的方法(这两个)。
以另一种方式提问,在1000 * 10或100 * 100的矩阵上进行矩阵/数据处理效率更高吗? 再次感谢。 – MKao