如何筛选出具有负值的列,并将其余列保存在新数据框中

时间:2015-12-08 11:14:41

标签: r dataframe

我想从数据框中过滤掉所有具有负值的变量。我使用这行代码(下面)来获取列的名称但是如何将正数列保存为新数据框

dat <- read.table(text = " value jobs  chairs    tables     lamps  vases
                                -1     0        0        0         7  9
                                 2     0        0        1         1  6 
                                -3     0        1        0         3  5 
                                 4     0        1        1         7  8 
                                -5     1        0        0         5  4
                                -6     1        0        1         1  3 
                                 7     1        1        0         0  7
                                 8     1        1        1         6  6
                                 9     0        0        0         8  9  ", header = TRUE) 

names(dat)[sapply(dat, function(x) min(x))>=0]
[1] "value"  "jobs"   "chairs" "tables" "lamps"  "vases"

2 个答案:

答案 0 :(得分:3)

使用您检索到的名称对数据框进行分组:

myNames<-names(dat)[sapply(dat, function(x) min(x))>=0]
dat[,myNames]

编辑:如果您不需要这些名称以供日后使用:

dat[,sapply(dat, min)>=0]

答案 1 :(得分:1)

dat[, sapply(dat, FUN = function(x) all(x >= 0))]

dat[, sapply(dat, FUN = function(x) !any(x < 0))]