我所使用的大部分數據集一般都是中等大小(大多數少於100k行),因此我的代碼執行時間對我來說通常不是那麼大的問題。減少計算時間
但是我最近試圖編寫一個函數,它將2個數據幀作爲參數(例如,使用n行),並返回一個包含m * n行的新數據幀。然後我必須對結果數據集執行一些操作。因此,即使在小數值的情況下(比如每個數值大約爲1000),所得到的數據幀也會有超過一百萬行。
當我嘗試對這個數據集進行簡單的操作時,代碼需要很長的時間才能運行。具體來說,我的結果數據框有2列與數值,我需要添加一個新的列,將比較這些列的值,並將它們分類爲 - 「大於」,「小於」,「綁」
我現在用下面的代碼:
df %>% mutate(compare=ifelse(var1==var2,"tied",
ifelse(var1>var2,"Greater than","lesser then")
而且,正如我前面提到的,這需要永遠運行。我對此做了一些研究,我發現顯然data.table上的操作比dataframe快得多,所以也許這是我可以嘗試的一種選擇。
但我從來沒有使用過data.tables。因此,在我深入研究之前,我很想知道是否有其他方法可以加快大型數據集的計算時間。
您認爲我可以嘗試其他的選擇嗎?
謝謝!
使用'sign'在這種情況下:'比較= C( 「捆綁」 「比更小的」, 「大於」)號(VAR1,VAR2)+2]' – nicola
已經有非常大的合作R中的數據集(高達1500萬行),只需咬緊牙關即可切換到data.table。它不僅可以通過正確的向量化代碼加速代碼10x +,而且我認爲語法更容易理解。我放棄了開關,並且感到遺憾,因爲我花了很多時間等待我的函數運行大型數據框架。 –