我有一个带>的数据框2000个功能。分类,数字和逻辑类型。
进一步处理的约束是数字特征不应具有任何值<但是,这些都存在于集合中。
我现在想了解如何从底层数据集中删除所有示例(行),其中至少有一个数字特征为负数。
已经尝试过apply(df, 1, function(x) any(as.numeric(x) <0))
但是,这会将我的分类功能转换为NaN。
答案 0 :(得分:0)
首先找到所有数字列:
df.classes <- lapply(df, class)
df.num <- c( which(df.classes == "numeric"), which(df.classes == "integer") ) # if you also want to include integer
然后我会查看df[, df.num]
并查看是否有任何负值,例如与rowSums( any(df[, df.num] < 0) )
。然后丢弃具有> 0
的值的所有行。
答案 1 :(得分:0)
Here is how I solved it.
numeric <- df[,sapply(df,class) %in% c('numeric','integer')]
result <- numeric[!apply(numeric,1,function(x) any(x < 0)),]