我有一个数据框,我试图采用一个因子变量,只保留前 31 个级别,并使所有其他级别成为通用级别。
我需要跨多个向量执行此操作,所以我想我会创建函数,但我运气不佳。我认为我需要以某种方式使用mapply
,或者Vectorize
但我认为我没有正确执行它,因为我收到有关无法分配 3.6 gigs 内存的错误消息。
这是函数,其中 x 是向量,topCount 是要保留的级别数
createFactor <-function(x, topCount){
table1 <- data.frame(table(x))
table1 <- table1[order(-table1$Freq),]
noChange <- table1$Var1[1:topCount]
newVals1 <- factor(ifelse(x %in% noChange, x, "-1000"))
newVals1
}
我希望能够写出这样的东西:
df1$topLevels <- createFactor(df1$fact1, 31)
有什么建议么 ?