Можно ли напрямую читать столбцы CSV как категориальные данные?


10

Мне нужно проанализировать с помощью R данные медицинского обследования (с более 100 кодированными столбцами), которое приходит в CSV. Я буду использовать погремушку для некоторого начального анализа, но за кадром это все еще R.

Если я читаю файл .csv () , столбцы с числовыми кодами рассматриваются как числовые данные. Я знаю, что могу создать из них категориальные столбцы с помощью factor (), но сделать это для 100+ столбцов - это очень сложно.

Я надеюсь, что есть лучший способ указать R импортировать столбцы напрямую как факторы. Или, по крайней мере, преобразовать их на месте впоследствии.

Спасибо!


3
Мы рады ответить на R вопросов здесь. См. Meta.stats.stackexchange.com/questions/252/…
Роб Хиндман

Ответы:


15

Вы можете использовать colClassesаргумент, чтобы указать классы ваших столбцов данных. Например:

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

присваивает число первому столбцу, коэффициент - второму и третьему. Поскольку у вас так много столбцов, ярлык может быть:

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

или некоторый такой вариант (то есть присвоение числового значения первому столбцу, коэффициент для следующих 37 столбцов и затем символ для последнего).


Это также может быть полезно, если вы хотите указать классы по имени переменной (например, для присвоения класса только одной переменной): stackoverflow.com/a/8185739/1169233
Waldir Leoncio

3

или просто сделайте это после того, как прочитали данные

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

хотя этот тип Q, вероятно, больше подходит для переполнения стека .

редактировать : см. ниже.


1
См. Meta.stats.stackexchange.com/questions/252/… текущий консенсус заключается в том, что это подходящий вопрос, если вы не согласны с тем, что связано с мета, не мучайте спрашивающего о новом вопросе.
russellpierce

1
хорошо, но у вас, вероятно, будет большая аудитория, чтобы получить ответы на чистый вопрос R (по крайней мере, на данный момент) - следовательно, «вероятно». "мука" это сильное слово, а? :)
apeescape

1
Конечно, мучения немного сильны; Я сожалею о том, что. Я был / просто разочарован постоянными пользователями-правонарушителями (из которых вы не один), которые продолжают перенаправлять спрашивающие вопросы в StackOverflow, не комментируя мета (где консенсус кажется довольно ясным).
Russellpierce

Это может привести к проблемам, когда у вас есть столбцы с числами с добавлением 0, смесь чисел и пропущенных значений или только значения 'T'и 'F'(преобразуются в логические).
Макс Кандокия
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.