我正在编写一个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专家潜伏在那里。
答案 0 :(得分:1)
此处您不需要sapply
。试试:
dft_ind <- dft$Freq < threshold
这应该可以加速大数据框架的功能。