Esiste un modo conciso per selezionare le colonne di un determinato tipo in dplyr
? Ad esempio, come selezionare tutte le colonne di caratteri all'interno di una catena dplyr
?dplyr - come selezionare le colonne di un certo tipo
risposta
Dplyr 0.5 ha la select_if()
che consente di scrivere select_if(is.character)
Questo rende il codice molto più pulito rispetto all'utilizzo di una domanda all'interno della catena dplyr! –
Un modo per procedere sarebbe innanzitutto ottenere le classi delle diverse colonne. Quindi, supponendo abbiamo alcuni dati:
library(dplyr)
DT <- data.frame(A = letters[1:6], B = c(T,F,F), C = seq(1,2,length.out = 6), D = 1:6)
dt <- tbl_df(DT)
dt$A <- as.character(dt$A)
uscita
A B C D
(chr) (lgl) (dbl) (int)
1 a TRUE 1.0 1
2 b FALSE 1.2 2
3 c FALSE 1.4 3
4 d TRUE 1.6 4
5 e FALSE 1.8 5
6 f FALSE 2.0 6
Ora possiamo ottenere le classi utilizzando la funzione di che:
cls <- sapply(dt, class)
cls
uscita
A B C D
"character" "logical" "numeric" "integer"
Ora è dritto inoltro:
newDF <- dt %>% select(which(cls=="character"))
newDF
uscita
A
(chr)
1 a
2 b
3 c
4 d
5 e
6 f
Nice - Sto cercando un modo per evitare di ottenere le classi al di fuori della catena dplyr. – paljenczy
Si può fare questo con
dt %>% select(which(sapply(.,is.character)))
Non che la familiarità con il pacchetto dplyr. Ma puoi fare qualcosa del genere? Simile alla funzione 'class':' d <- tbl_df (iris); type_sum (d); seleziona (d, which (type_sum (d) == "dbl")) ' – Jimbou