Чи можна безпосередньо читати стовпці CSV як категоричні дані?


10

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

Якщо я читаю файл.csv () , то стовпці з числовими кодами розглядаються як числові дані. Я знаю, що міг би створити з них категоричні стовпці з фактором (), але робити це для 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.