我有一个像这样的dataFrame设置:
dfRiskChanges <<- data.frame(-1, -1, -1, -1, -1, -1, -1, -1)
colnames(dfRiskChanges) <<- c('Funcational', 'Steroid', 'HxCHF', 'SOB',
'HxCOPD', 'Smoker', 'DMAll', 'HTNMed')
然后我用实数替换适用的dataFrame值,因此dataFrame的最终版本可以是:
Funcational Steroid HxCHF SOB HxCOPD Smoker DMAll HTNMed
-1 -1 -1 -1 -1 -1 1.983131 -1 0.6438011
现在我想删除值为-1的所有列。
我一直在尝试这样的事情:
dfRiskChanges.new <- dfRiskChanges[dfRiskChanges$units != -1, ]
和
dfRiskChanges.new <<- dfRiskChanges %>% filter(units != -1)
和
dfRiskChanges %>% select_if(function(col) all(col != -1))
一切都没有成功。任何帮助将不胜感激!
答案 0 :(得分:1)
让我们添加另一个具有不同值的列:
>dfRiskChanges$NoSmoke=0
> dfRiskChanges
Funcational Steroid HxCHF SOB HxCOPD Smoker DMAll HTNMed NoSmoke
1 -1 -1 -1 -1 -1 -1 -1 -1 0
接下来,只返回不包含-1的列:
> df2=dfRiskChanges[!grepl(-1,dfRiskChanges)] #picks out all columns that don't contain -1
> df2
NoSmoke
1 0
答案 1 :(得分:0)
使用select_if
中的dplyr
函数,我修改了您的代码,如下所示。
dfRiskChanges <- data.frame(
'Funcational' = -1,
'Steroid' = -1,
'HxCHF' = -1,
'SOB' = -1,
'HxCOPD' = -1,
'Smoker' = 1.983131,
'DMAll' = -1,
'HTNMed' = 0.6438011
)
library(dplyr)
dfRiskChanges %>% select_if(function(col) sum(col) != -1)