È possibile leggere direttamente le colonne CSV come dati categorici?


10

Devo analizzare con R i dati di un sondaggio medico (con oltre 100 colonne codificate) che arriva in un CSV. Userò sonaglio per un po 'l'analisi iniziale, ma dietro le quinte è ancora R.

Se leggo il file.csv () , le colonne con codici numerici vengono trattate come dati numerici. Sono consapevole di poter creare colonne categoriali da loro con factor () ma farlo per oltre 100 colonne è una seccatura.

Spero che ci sia un modo migliore per dire a R di importare direttamente le colonne come fattori. O almeno per convertirli in posizione successivamente.

Grazie!


3
Siamo felici di rispondere alle domande R qui. Vedi meta.stats.stackexchange.com/questions/252/…
Rob Hyndman

Risposte:


15

È possibile utilizzare l' colClassesargomento per specificare le classi delle colonne di dati. Per esempio:

data <- read.csv('foo.csv', colClasses=c('numeric', 'factor', 'factor'))

assegnerà un numero alla prima colonna, fattore alla seconda e terza. Dato che hai così tante colonne, un collegamento potrebbe essere:

data <- read.csv('foo.csv', colClasses=c('numeric', rep('factor', 37), 'character'))

o qualche variazione del genere (ovvero assegnare un numero alla prima colonna, fattore alle successive 37 colonne, quindi carattere all'ultima).


Questo può anche essere utile, se si desidera specificare le classi in base al nome della variabile (ad esempio, per assegnare la classe a una sola variabile): stackoverflow.com/a/8185739/1169233
Waldir Leoncio,

3

o semplicemente dopo aver letto i dati

dat <- read.csv("kdfjdkf")
apply(dat, 2, factor)

sebbene questo tipo di Q sia probabilmente più adatto allo StackTranslate.it .

modifica : vedi sotto.


1
Vedi meta.stats.stackexchange.com/questions/252/… l'attuale consenso è che questa è una domanda appropriata, se non sei d'accordo su chime su meta, non tormentare la nuova domanda.
Russellpierce,

1
ok, ma probabilmente avrai un pubblico più vasto per ottenere risposte a una pura domanda R (almeno per ora) - quindi, il "probabilmente". "tormento" è una parola forte eh? :)
apeescape

1
Certo, il tormento è un po 'forte; Mi dispiace per quello. Ero / sono solo frustrato per gli utenti ripetuti (di cui non sei uno) che persistono nel reindirizzare i richiedenti a StackOverflow senza aver fatto alcun commento su meta (dove il consenso sembra abbastanza chiaro).
Russellpierce,

Ciò può portare a problemi in cui sono presenti colonne con numeri a 0, una combinazione di numeri e valori mancanti o solo valori di 'T'e 'F'(viene convertito in logico).
Max Candocia,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.