我正在處理從數據庫檢索到的分類變量,並且想要使用因子來維護數據的「豐滿度」。哈希或列表支持的因子水平
例如,我有存儲的顏色和它們相關聯的數字ID的表
ID | Color ------+------- 1 | Black 1805 | Red 3704 | White
所以我想使用的一個因素來存儲在數據幀中,例如這樣的信息:
Car Model | Color ----------+------- Civic | Black Accord | White Sentra | Red
其中顏色列是一個因子,存儲的基礎數據而不是字符串實際上是c(1,3704,1805) - 與每種顏色相關的ID。
因此,我可以通過修改因子類的對象的levels屬性來創建自定義因子以實現此效果。
不幸的是,正如您在示例中所看到的,我的ID不會遞增。在我的申請中,我有30個關卡,一個關卡的最大ID是9,000。因爲級別存儲在一個數組中的因子,這意味着我正在存儲一個長度爲9,000的整數向量,其中只有30個元素。
是否有任何方法可以使用散列或列表更有效地完成這種效果?即如果我要在因子的levels屬性中使用散列,我可以將所有30個元素與我喜歡的任何索引一起存儲,而無需創建大小爲max(ID)的數組。
在此先感謝!
謝謝,湯米。我希望有一些事情可以避免必須做第二步(查找實際ID),但是你所建議的最終可能會達到最佳效果。 – 2012-03-21 17:49:14
...我用一種可能的解決方案更新了答案... – Tommy 2012-03-21 20:39:53
這個解決方案似乎比其他基於散列的答案稍微不太優雅(儘管可能更容易處理),但是 - 令人驚訝的是 - 我使用此代碼獲得更好的性能比我使用哈希。它看起來像是,雖然不變,但從哈希環境中檢索元素的時間足夠長,以至於當數量級別<〜4000時,基於數組的代碼性能會更好(散列需要恆定的.25s來格式化10,000行df ,你需要.17 + .0000212L其中L是級別的數量)。 – 2012-03-22 16:33:23