Я пишу функцию R, которая принимает столбец dataframe (вероятно, предпочтительно фактор типа) и объединяет все записи под пользовательской частотой как «другие». Это делается для очистки данных.Лучший способ записать эту функцию очистки данных 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)
}
Я думаю, что это довольно просто, но есть способы, чтобы сделать мой код более кратким или точным?
Я бы спросил об этом в обзоре стека обмена кодом, хотя мне непонятно, что многие эксперты R скрываются там.
Вот несколько идей: http://stackoverflow.com/q/34385340/ – Frank
Имея «фактор», 'table' уважает свои« уровни », поэтому вы можете просто заменить низкочастотные« уровни »на 'levels (column) [table (column)