2016-06-03 2 views
2

범주 형 변수 Weather이있는 데이터 집합이 있습니다. 이 변수에는 '건조한', '이슬비'및 '비'와 같은 3 가지 텍스트 값이 있습니다.텍스트 값에서 범주 형 변수를 만드는 방법 R

이 변수에 숫자 값을 할당 할 수있는 다른 변수를 만들고 싶습니다. 예를 들어 Dry1이고, Drizzle2이고 Rain3입니다.

보조 정보로 weather 변수가 물 시스템의 막힘을 예측하는 데 사용되므로 일종의 선형 회귀 모델에서이를 사용할 것입니다.

+0

비슷한 게시물을 확인할 수도 있습니다. [여기] (http://stackoverflow.com/questions/37620926/using-dplyr-to-get-cumulative-count-by-group) – akrun

+0

http://stackoverflow.com/questions/37 중복 55473/무엇보다 효율적인 효율적인 방법으로지도 고유의 벡터 값 순차 숫자 – h3rm4n

답변

4

우리는 factor로 변환 한 후 integer

as.integer(factor(df1$Weather, levels = c("Dry", "Drizzle", "Rain")) 
+1

최고 ... 고맙습니다. 대답 동료에게 ... –

+0

@SheikhUsman 문제 없습니다. 그것은 도움이 된 것을 기쁘게 생각합니다. – akrun

+0

@akrun, 왜'match (df1 $ Weather, c ("Dry", "Drizzle", "Rain"))가 좋지 않은지 궁금하십니까? –

1

당신은 정렬 된 요소로 변환하고 라벨을 할당 할 수 있습니다에 강제 할 수

data <- data.frame(Weather = c("Drizzle", "Rain", "Drizzle", "Rain", "Dry")) factor(data$Weather, levels = c("Dry", "Drizzle", "Rain"), labels = c(1, 2, 3), ordered=TRUE)

반환하는 :

[1] 2 3 2 3 1 Levels: 1 < 2 < 3

선형 회귀 모델에서 순서가 지정된 요소를 사용하는 방법을 읽어 볼 수도 있습니다. 이 질문은 좋은 시작이 될 수 있습니다

match(df1$Weather, c("Dry", "Drizzle", "Rain")) 

이 (이미 정말 빨리 어쨌든) @ akrun의 솔루션보다 약간 빠릅니다 : 공식적으로 https://stats.stackexchange.com/questions/33413/continuous-dependent-variable-with-ordinal-independent-variable

3

,이 또한 그 일을 할 것입니다

x <- sample(c("Dry", "Drizzle", "Rain"), 1e6, rep=T) 

microbenchmark::microbenchmark(
    as.integer(factor(x, levels = c("Dry", "Drizzle", "Rain"))), 
    match(x, c("Dry", "Drizzle", "Rain")) 
) 

Unit: milliseconds 
expr  min  lq  mean  median  
14.31158 18.13069 23.19702 20.98414 23.10840 
13.30326 16.00538 19.07544 17.59751 19.53679 
+0

고맙습니다 ... –

+0

당신을 환영합니다 ;-) –