我只是好奇,不管解釋性如何,以長格式或寬格式存儲數據是否更高效?我已經使用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