在R代码中,我想从一个数据集中选择所有的变量,其中每个列的相同值小于40%.我正在应用sapply,但没有得到正确的输出。注:所有列的值都是数字。
train = train[, sapply(train, function(col) length(unique(col))) < 0.4*nrow(train)]
请建议如何继续。
通过玩弄一个玩具数据集,我找到了这段代码,它的工作原理是这样的
train[, sapply(train, function(x) {(sort(table(x), decreasing = TRUE)/nrow(train))[[1]] < 0.4})]
基本上,我为每一列数字创建相对频率表(按递减顺序排序)。train
,然后我检查每列的最频繁值出现的次数是否少于40%。如果是,则选择此列,否则丢弃。