241 votes

Sélectionner uniquement les colonnes numériques d'un cadre de données

Supposons que vous ayez un data.frame comme celui-ci :

x <- data.frame(v1=1:20,v2=1:20,v3=1:20,v4=letters[1:20])

Comment sélectionner uniquement les colonnes de x qui sont numériques ?

8voto

C'est un code alternatif aux autres réponses :

x[, sapply(x, class) == "numeric"]

avec un data.table

x[, lapply(x, is.numeric) == TRUE, with = FALSE]

3 votes

Il s'agit davantage d'un commentaire sur la réponse choisie que d'une réponse unique.

2 votes

Les colonnes peuvent avoir plus d'une classe.

6voto

Yash Khokale Points 31
library(purrr)
x <- x %>% keep(is.numeric)

3voto

user1 Points 187

La bibliothèque PCAmixdata possède la fonction splitmix qui sépare les données quantitatives (données numériques) et qualitatives (données catégorielles) d'un cadre de données donné "YourDataframe" comme indiqué ci-dessous :

install.packages("PCAmixdata")
library(PCAmixdata)
split <- splitmix(YourDataframe)
X1 <- split$X.quanti(Gives numerical columns in the dataset) 
X2 <- split$X.quali (Gives categorical columns in the dataset)

1voto

서영재 Points 86

Si vous avez beaucoup de variables de facteur, vous pouvez utiliser select_if funtion. installer les paquets dplyr. Il existe de nombreuses fonctions qui séparent les données en satisfaisant une condition. Vous pouvez définir les conditions.

Utilisez comme ça.

categorical<-select_if(df,is.factor)
str(categorical)

0voto

Ayushi Points 21

Une autre façon de procéder pourrait être la suivante:-

#extracting numeric columns from iris datset
(iris[sapply(iris, is.numeric)])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X