根据行值删除R data.frame列

时间:2017-06-05 16:46:41

标签: r dataframe shiny

我有一个像这样的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))

一切都没有成功。任何帮助将不胜感激!

2 个答案:

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