Czy można bezpośrednio odczytywać kolumny CSV jako dane kategoryczne?


10

Muszę przeanalizować za pomocą R dane z ankiety medycznej (z ponad 100 zakodowanymi kolumnami), które pochodzą z CSV. Użyję grzechotkę jakiegoś wstępnej analizy, ale za kulisami to wciąż R.

Jeśli odczytam plik.csv () , kolumny z kodami numerycznymi są traktowane jako dane numeryczne. Zdaję sobie sprawę, że mogę tworzyć z nich kolumny kategorialne za pomocą czynnika (), ale robienie tego dla ponad 100 kolumn jest uciążliwe.

Mam nadzieję, że istnieje lepszy sposób, aby powiedzieć R, aby importował kolumny bezpośrednio jako czynniki. Lub przynajmniej później je przekonwertować.

Dziękuję Ci!


3
Chętnie odpowiemy na pytania R. Zobacz meta.stats.stackexchange.com/questions/252/…
Rob Hyndman,

Odpowiedzi:


15

Za pomocą tego colClassesargumentu można określić klasy kolumn danych. Na przykład:

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

przypisze wartość liczbową do pierwszej kolumny, a czynnik do drugiej i trzeciej. Ponieważ masz tak wiele kolumn, skrót może być:

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

lub niektóre takie odmiany (tj. przypisz liczbowo do pierwszej kolumny, czynnik do następnych 37 kolumn, a następnie znak do ostatniej).


Może to być również przydatne, jeśli chcesz określić klasy według nazwy zmiennej (np. W celu przypisania klasy tylko do jednej zmiennej): stackoverflow.com/a/8185739/1169233
Waldir Leoncio

3

lub po prostu zrób to po odczytaniu danych

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

chociaż ten typ Q jest prawdopodobnie bardziej odpowiedni Przepełnienia stosu .

edycja : patrz poniżej.


1
Zobacz meta.stats.stackexchange.com/questions/252/... obecny konsensus jest taki, że jest to właściwe pytanie, jeśli nie zgadzasz się z gongiem w meta, nie dręcz nowego pytającego.
russellpierce

1
ok, ale prawdopodobnie będziesz mieć większą publiczność, aby uzyskać odpowiedzi na czyste pytanie R (przynajmniej na razie) - stąd „prawdopodobnie”. „udręka” to mocne słowo, prawda? :)
apeescape,

1
Jasne, udręka jest trochę silna; Przykro mi z tego powodu. Byłem / jestem po prostu sfrustrowany powtarzającymi się użytkownikami przestępców (których nie jesteś), którzy uporczywie przekierowują pytających do StackOverflow, nie komentując meta (gdzie konsensus wydaje się dość jasny).
russellpierce

Może to prowadzić do problemów, w których masz kolumny z liczbami wypełnionymi 0, mieszanką liczb i brakujących wartości lub mają tylko wartości 'T'i 'F'(zostają przekonwertowane na logiczne).
Max Candocia
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.