10
votes

Comment supprimer la colonne de cadre de données avec une seule valeur

Disons que j'ai la trame de données suivante dans R: xxx

Je voudrais créer une fonction qui supprimerait des colonnes sans variance (par exemple, dans ce cas, il supprimerait la colonne d_2 car il n'a qu'une valeur) seulement)

Je sais que je pouvais vérifier à la main, mais dans la réalité, mes données sont très grandes Et je voudrais l'automatiser. Aucune idée?


0 commentaires

3 Réponses :


16
votes

Filtre code> est une fonction utile ici. Je ne filtrerai que pour ceux où il y a plus de 1 valeur unique.

I.e. P>

Filter(function(x)(length(unique(x))>1), df1)

##   Item_Name D_1 D_3
## 1     test1   1  11
## 2     test2   0   3
## 3     test3   1   1


1 commentaires

serait plus efficace si vous avez vérifié min (x)! = max (x) (voir Stackoverflow.com/ A / 56864704/4137985 )



10
votes

Vous pouvez faire:

lapply(df1[-1], var, na.rm = TRUE) != 0
#   D_1   D_2   D_3 
#   TRUE FALSE  TRUE 


0 commentaires

4
votes

in dplyr code>, nous pouvons utiliser n_distinct code> pour compter des valeurs uniques et select_if code> pour sélectionner des colonnes xxx pré>

Nous pouvons utiliser la même logique avec Purrr code> 'S Garder code> et rejeter code> p>

df1[-1] %>% select_if(~sd(.) != 0)


0 commentaires