brunch

You can make anything
by writing

C.S.Lewis

by 쩐시 Aug 19. 2021

R 프로그래밍 - 2021 서울대기오염 분석 2

문자형 변수 데이터 유형 변환

앞 단계에서 어찌어찌 1년치 서울대기오염 데이터 통합까지 성공했다.


그리고 만든 테이블을 좀 살펴보았다.

1년치 통합된 데이터, df_new

역시 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가 없는 순수 데이터 값이다(앞 편 참고)


변수명이 없는 period1의 문자형 날짜가 date 형식으로 변한 것을 확인할 수 있다

성공했다!! 이렇게 date 유형으로 변경되면 내가 원하는 대로 날짜 데이터를 자유자재로 변경할 수 있게 된다.



header가 있던 통합 df_new에서는 불가능했던 유형변경이 period1에서 가능했던 것을 토대로 보아, 역시 header를 다시 제거한 후 날짜&num 문제들을 처리, 최종적으로 다시 header를 씌우자...는 process 전략을 다시 수립하였다 ㅠ



1. header제거 (기존 데이터로 복구)

df_new<- bind_rows(period1, period2, period3, period4, period5, period6, period7) 


기존 변수명이 없는 썡 데이터로 복구시켰다



2-1. 문자형 변수 ->  수치형으로 변경


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 행의 데이터 유형이 수치형으로 변경된 것을 확인할 수 있다.


2-2. 문자형 날짜 ->  Date로 변경&정렬


df_new$...1 <- as.Date(df_new$...1)

역시, 문제 없이 날짜 변수(1행)도 date로 변경되었다.


df_new$...1 <- sort(df_new$...1)  이 경우 해당 컬럼만 순서 바뀌는 오류가 납니다, 정렬 스킵!

본래 목적이였던, 오래된 날짜부터의 정렬을 위해 sort()함수를 써서 성공적으로 해결!

date로 유형변환하지 않으면 cha 상태에서는 그 어떤 명령도 먹히질 않는다...ㅠㅠ


3. header 복구시키기


colnames(df_new) <- c("날짜","측정소명", "미세먼지 PM10\n(\u338d/m3)", "초미세먼지\nPM2.5 (\u338d/m3)", "오존\nO3 (ppm)", "이산화질소\nNO2 (ppm)", "일산화탄소\nCO (ppm)",  "아황산가스\nSO2(ppm)" )



두근두근.... 성공!

앞에서 해결한 date&num 유형 모두 유지된 채로 테이블에 header가 들어갔다!!


이제 문제 없이 전처리를 할 수 있게 되었다...

전처리가 데이터 분석의 80%라고 하는데, 나는 이미 전처리의 전단계에서 해매다니...ㅠ


다음 글은 전처리에서의 전쟁 과정이 되겠다... 화이팅

작가의 이전글 R 프로그래밍 - 2021 서울대기오염 분석 1
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari