CSV 열을 범주 형 데이터로 직접 읽을 수 있습니까?


10

CSV로 제공되는 의료 설문 조사 (100 + 코딩 된 열 포함)의 데이터를 R로 분석해야합니다. 초기 분석에는 딸랑이 를 사용 하지만 뒤에서 여전히 R입니다.

내가하면 read.csv () 파일, 숫자 코드로 열이 숫자 데이터로 처리됩니다. factor ()를 사용하여 범주 열을 만들 수는 있지만 100 + 열에 대해 수행하는 것은 고통 스럽습니다 .

R에게 열을 요인으로 직접 가져 오도록하는 더 좋은 방법이 있기를 바랍니다. 또는 적어도 나중에 그 자리에서 변환해야합니다.

감사합니다!


3
우리는 여기서 R 질문을 기쁘게 생각합니다. meta.stats.stackexchange.com/questions/252/…
Rob Hyndman 1

답변:


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'(논리로 변환됩니다).
Max Candocia
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.