Ist es möglich, CSV-Spalten direkt als kategoriale Daten zu lesen?

10

Ich muss mit R die Daten einer medizinischen Umfrage (mit mehr als 100 codierten Spalten) analysieren, die in einer CSV enthalten ist. Ich werde Rassel für eine erste Analyse verwenden, aber hinter den Kulissen ist es immer noch R.

Wenn ich die Datei.csv () lese , werden Spalten mit numerischen Codes als numerische Daten behandelt. Ich bin mir bewusst, dass ich mit factor () kategoriale Spalten daraus erstellen könnte, aber es ist schmerzhaft, dies für mehr als 100 Spalten zu tun.

Ich hoffe, es gibt eine bessere Möglichkeit, R anzuweisen, die Spalten direkt als Faktoren zu importieren. Oder zumindest, um sie später zu konvertieren.

Vielen Dank!

Wishihadabettername
quelle
3
Gerne beantworten wir hier R-Fragen. Siehe meta.stats.stackexchange.com/questions/252/…
Rob Hyndman

Antworten:

15

Mit dem colClassesArgument können Sie die Klassen Ihrer Datenspalten angeben. Zum Beispiel:

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

weist der ersten Spalte eine Zahl zu, der zweiten und dritten einen Faktor. Da Sie so viele Spalten haben, könnte eine Verknüpfung sein:

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

oder eine solche Variation (dh der ersten Spalte numerisch zuweisen, den nächsten 37 Spalten den Faktor und der letzten der Spalte ein Zeichen zuweisen).

ars
quelle
Dies kann auch nützlich sein, wenn Sie Klassen nach Variablennamen angeben möchten (z. B. um nur einer Variablen eine Klasse zuzuweisen
Waldir Leoncio
3

oder machen Sie es einfach, nachdem Sie die Daten gelesen haben

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

obwohl diese Art von Q wahrscheinlich besser für den Stapelüberlauf geeignet ist .

bearbeiten : siehe unten.

apeescape
quelle
1
Siehe meta.stats.stackexchange.com/questions/252/…. Der aktuelle Konsens ist, dass dies eine angemessene Frage ist. Wenn Sie nicht mit meta einverstanden sind, quälen Sie den neuen Fragesteller nicht.
Russellpierce
1
ok, aber Sie werden wahrscheinlich ein größeres Publikum haben, um Antworten auf eine reine R-Frage zu erhalten (zumindest für den Moment) - daher das "wahrscheinlich". "Qual" ist ein starkes Wort, oder? :)
Apeescape
1
Sicher, die Qual ist ein bisschen stark; Das tut mir leid. Ich war / bin nur frustriert über Benutzer von Wiederholungstätern (von denen Sie keiner sind), die weiterhin Fragesteller zu StackOverflow umleiten, ohne einen Kommentar zu Meta abgegeben zu haben (wo der Konsens ziemlich klar zu sein scheint).
Russellpierce
Dies kann zu Problemen führen, wenn Sie Spalten mit 0-aufgefüllten Zahlen, eine Mischung aus Zahlen und fehlenden Werten haben oder nur Werte von 'T'und 'F'(wird in logisch konvertiert).
Max Candocia