문자형 변수 데이터 유형 변환
앞 단계에서 어찌어찌 1년치 서울대기오염 데이터 통합까지 성공했다.
그리고 만든 테이블을 좀 살펴보았다.
역시 str()로 변수들의 유형이 좀 이상하다는 것을 확인했다.
이상함을 느꼈던 것은 날짜를 가장 오래된 것들 부터 arrange()하려고 했더니 cha 에러 나는것을 확인하면서 다른 변수들의 오류도 확인.
처러해야할 문제는 두 가지 였다.
1. 문자형 날짜를 date 형식으로 바꾼 후, 오래된 날짜부터 정렬
2. 오존/이산화질소/일산화탕소의 문자형을 수치형으로 변경
우선 단순하게 아래 코드로 접근했다.
df_new$날짜 <- as.Date(df_new$날짜)
어림도 없지!
결론은 위와같이 error가 뜨면서 실패했다. 대충 데이터 유형이 맞지 않아서 변경할 수가 없다는 뜻.
게다가, 아래와 같이 다른 변수들의 변경도 실패했다. 원인은 같음
df_new$`오존O3 (ppm)` <- as.numeric(df_new$`오존O3 (ppm)`)
#error 경고메시지(들): In grepl("|||", what, fixed = TRUE) :이 로케일에서는 입력문자열 1는 유효하지 않습니다
의심병이 도진 나는, 혹시 몰라 period1의 날짜 데이터만 변경을 시도해보았다.
* 참고로, period1은 header가 없는 순수 데이터 값이다(앞 편 참고)
성공했다!! 이렇게 date 유형으로 변경되면 내가 원하는 대로 날짜 데이터를 자유자재로 변경할 수 있게 된다.
header가 있던 통합 df_new에서는 불가능했던 유형변경이 period1에서 가능했던 것을 토대로 보아, 역시 header를 다시 제거한 후 날짜&num 문제들을 처리, 최종적으로 다시 header를 씌우자...는 process 전략을 다시 수립하였다 ㅠ
df_new<- bind_rows(period1, period2, period3, period4, period5, period6, period7)
df_new$...5 <- as.numeric(df_new$...5)
df_new$...6 <- as.numeric(df_new$...6)
df_new$...7 <- as.numeric(df_new$...7)
위와 같이, 아무 문제 없이 5,6,7 행의 데이터 유형이 수치형으로 변경된 것을 확인할 수 있다.
df_new$...1 <- as.Date(df_new$...1)
역시, 문제 없이 날짜 변수(1행)도 date로 변경되었다.
df_new$...1 <- sort(df_new$...1) 이 경우 해당 컬럼만 순서 바뀌는 오류가 납니다, 정렬 스킵!
본래 목적이였던, 오래된 날짜부터의 정렬을 위해 sort()함수를 써서 성공적으로 해결!
date로 유형변환하지 않으면 cha 상태에서는 그 어떤 명령도 먹히질 않는다...ㅠㅠ
colnames(df_new) <- c("날짜","측정소명", "미세먼지 PM10\n(\u338d/m3)", "초미세먼지\nPM2.5 (\u338d/m3)", "오존\nO3 (ppm)", "이산화질소\nNO2 (ppm)", "일산화탄소\nCO (ppm)", "아황산가스\nSO2(ppm)" )
두근두근.... 성공!
앞에서 해결한 date&num 유형 모두 유지된 채로 테이블에 header가 들어갔다!!
이제 문제 없이 전처리를 할 수 있게 되었다...
전처리가 데이터 분석의 80%라고 하는데, 나는 이미 전처리의 전단계에서 해매다니...ㅠ
다음 글은 전처리에서의 전쟁 과정이 되겠다... 화이팅