É possível ler diretamente as colunas CSV como dados categóricos?

10

Preciso analisar com R os dados de uma pesquisa médica (com mais de 100 colunas codificadas) que vem em um CSV. Vou usar chocalho para algumas análises iniciais, mas nos bastidores ainda é R.

Se eu ler o arquivo.csv () , as colunas com códigos numéricos serão tratadas como dados numéricos. Estou ciente de que poderia criar colunas categóricas a partir delas com factor (), mas fazer isso para mais de 100 colunas é uma dor.

Espero que exista uma maneira melhor de dizer ao R para importar as colunas diretamente como fatores. Ou pelo menos para convertê-los no lugar depois.

Obrigado!

wishihadabettername
fonte
3
Estamos felizes em responder perguntas R aqui. Veja meta.stats.stackexchange.com/questions/252/…
Rob Hyndman

Respostas:

15

Você pode usar o colClassesargumento para especificar as classes das suas colunas de dados. Por exemplo:

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

atribuirá numérico à primeira coluna, fator à segunda e terceira. Como você tem muitas colunas, um atalho pode ser:

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

ou alguma variação desse tipo (por exemplo, atribuir numérico à primeira coluna, fatorar para as próximas 37 colunas e depois caractere para a última).

ars
fonte
Isso também pode ser útil, se você quiser especificar aulas por nome da variável (por exemplo, para a atribuição de classe para apenas uma variável): stackoverflow.com/a/8185739/1169233
Waldir Leoncio
3

ou apenas depois de ler os dados

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

embora esse tipo de Q seja provavelmente mais adequado para o estouro de pilha .

editar : veja abaixo.

apeescape
fonte
11
Veja meta.stats.stackexchange.com/questions/252/… o consenso atual é que essa é uma pergunta apropriada. Se você não concorda com a meta, não atormente a nova pergunta.
russellpierce
11
ok, mas você provavelmente terá um público maior para obter respostas para uma pergunta R pura (pelo menos por enquanto) - portanto, o "provavelmente". "tormento" é uma palavra forte eh? :)
apeescape
11
Claro, o tormento é um pouco forte; Me desculpe por isso. Fiquei / estou frustrado com os usuários reincidentes (dos quais você não é um) que persistem em redirecionar os solicitantes de pergunta para o StackOverflow sem ter feito nenhum comentário sobre a meta (onde o consenso parece bastante claro).
russellpierce
Isso pode levar a problemas nos quais você tem colunas com números preenchidos com 0, uma mistura de números e valores ausentes ou possui apenas valores de 'T'e 'F'(é convertido em lógico).
Max Candocia