2017-06-05 116 views
0

降[R data.frame列我有一个数据帧的设置是这样的:基于行值

dfRiskChanges <<- data.frame(-1, -1, -1, -1, -1, -1, -1, -1) 
colnames(dfRiskChanges) <<- c('Funcational', 'Steroid', 'HxCHF', 'SOB', 
          'HxCOPD', 'Smoker', 'DMAll', 'HTNMed') 

然后我用实数代替适用的数据框中的值,因此数据帧的最终版本可能是:

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)) 

均无功而返。任何帮助,将不胜感激!

+1

为什么你用'<< - '这么多? – Dason

+0

列的长度将始终为1? –

+0

'dfRiskChanges <-t(dfRiskChanges); t(dfRiskChanges [dfRiskChanges [,1]!= -1,])' – bouncyball

回答

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 
+0

我将示例中的0更改为-1,它完美地工作!非常感谢。 – Andrew

0

dplyr使用select_if功能,我按如下方式修改了你的代码。

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)