我想从数据框中删除零值与非零值的比率高于某个阈值(例如 0.4)的列。我编写的执行相同操作的代码如下
ZeroValRatio <- as.data.frame(colSums(train1==0)/nrow(train1))
ZeroValRatio <- rename(zeroValRatio,value="colSums(train1 == 0)/nrow(train1)")
drop <- as.data.frame(filter(ZeroValRatio,value>"0.3198630137"))
drop <-as.data.frame(t(drop))
df <- subset(train1,select = -which(colnames(drop)==colnames(train1)))
在这里,train1 = 我要执行操作的原始数据帧。
运行此代码后,最终数据帧“df”仍然有 4 个变量。此外,运行代码后
df2 = train1[,!(names(train1) %in% drop)]
我得到了 df2 和 train1 中的所有列,而没有实际执行删除操作。