2016-08-11 75 views
0

我正在編寫一個R函數,它需要一個數據幀列(可能最好是類型因子),並將用戶定義頻率下的所有條目合併爲「其他」。這是爲數據清理完成的。寫這個R數據清理功能的更好的方法是什麼?

這是我採寫:

zcut <- function(column, threshold){ 
    dft <- data.frame(table(column)) 
    dft_ind <- sapply(dft$Freq, function(x) x < threshold) 
    dft_list <- dft[[1]][dft_ind] 
    levels(column)[levels(column) %in% dft_list] <- "Other" 
    return(column) 
} 

我覺得這是非常簡單的,但是否有辦法讓我的代碼更簡潔或精確?

我會問這個Code Review堆棧交換,儘管我不清楚許多R專家潛伏在那裏。

+2

下面是各種想法:http://stackoverflow.com/q/34385340/ – Frank

+2

有一個「因素」,「表」尊重其「水平」,所以你可以用低頻率「水平」替換'級別(列)[表格(列)<閾值] =「其他」 –

回答

1

這裏您不需要sapply。試試:

dft_ind <- dft$Freq < threshold 

這應該加快函數在大數據量的情況下。

相關問題