Hy, я написал код с пакетом dplyr
.Вот пример того, как можно избавиться от столбцов, содержащих более 90% нулей:
library(dplyr)
df <- data.frame(colA=sample(c(0,1), 100, replace=TRUE, prob=c(0.8,02)),
colB=sample(c(0,1), 100, replace=TRUE, prob=c(0.99,001)),
colC=sample(c(0,1), 100, replace=TRUE, prob=c(0.5,05)),
colD=sample(c(0,1), 100, replace=TRUE, prob=c(0,1)),
colE=rep(0, 100))
fct <- function (x) x==0
zero_count <- df %>% mutate_all(funs(fct)) %>% summarise_all(sum)
col_filter <- zero_count <= 0.9 * nrow(df)
df_filter <- df[, col_filter]