일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 배열삭제
- 이스케이프시퀀스
- R 그래프
- 그대로 출력하기
- R데이터형태
- 탈출문자
- useState
- 배열추가
- barplot in r
- 그래픽
- React
- plot in r
- 값추가
- 10172
- 광명시버스분석
- 값삭제
- 데이터분석
- await
- DataFrame
- asynchronization
- 백준
- react #회원가입 #비밀번호비교
- vetor
- 버스분석
- getline
- barplot
- 백준 10172
- 백준 11718
- 이용현황분석
- setstate
- Today
- Total
devlog_zz
버스 노선별 이용 승객 현황분석 barplot() in r 본문
광명시 버스 노선별 이용승객 현황 분석
1) 자료 다운로드
버스통계자료 - 경기도 교통 정보 센터
http://gits.gg.go.kr/web/main/index.do
Microsoft Excel 97-2003 워크시트(.xls) 자료를 Microsoft Excel 쉼표로 구분된 값 파일(.csv) 로 변환해서 사용
.xls -> .csv
( 처음에 엑셀파일에서 다른이름으로 저장을 CSV로 했는데 CSV UTF-8(쉼표로분리)(*.cvs) 로 변환하면 안됨
저장을 그냥 CSV (쉼표로 분리) (*.csv)로 저장해야 인코더 변환 필요없이 그냥 read.csv()로 읽을 수 있음 )
2) data 추출
자료가 이런구조여서 평일 주말을 구분하여 전체통행의 전체자료를 사용하고자 하였다.
평일 자료 , 주말 자료 dataframe을 만들고자 하였다.
홀수행 짝수행 을 구분하여 평일 주말 데이터를 따로 저장하였다.
이 때 처음엔
if( 행 %% 2 ==0)
평일에 저장
이런식으로 하려고 했는데 저장하는 과정에서 어려움이 있었다. ( 순차적으로 데이터를 넣는 방법?)
생각하다가 더 간단한 방법을 발견하였다.
http://issactoast.com/66
이 블로그를 참조하였다.
벡터 x의 짝수번째 원소들만을 가지는 새로운 벡터 y로 저장하는 방법
weekday <- total[1:(length(total)/2)*2-1] #평일(홀수)
weekend <- total[1:(length(total)/2)*2] #주말 (짝수)
이렇게 데이터를 뽑아와 저장하였다.
3) numeric형으로 변환
나중에 그래프를 출력하다가 자료가 numeric형이 아님을 발견하였다
기존 데이터의 형을 알기위해 class()함수를 사용
> class(weekday)
[1] "factor"
factor 형을 numeric 형으로 바꾸는 방법
as.numeric ( as.character( factor형 data ) )
이방법을 적용하였는데 계속 NA가 뜨는오류가 발생하였다.
> as.numeric(as.character(weekday))
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 556 NA NA
Warning message:
NAs introduced by coercion
자료들이 다 NA로 뜨고 556만 제대로 변환되길래 원래 자료를 보니 1000이 넘어가면 1,000이런 형태로 표기되어 있어
콤마 때문에 생기는 문제인 점을 발견하고 ,를 제거하기위해 gsub()함수를 사용하여 변환하였다.
> weekday <- gsub(',','',weekday) #,(콤마) 다 없애기!
> weekday <- as.numeric(as.character(weekday)) # factor -> numeric
> class(weekday)
[1] "numeric"
4) weekday와 weekend 합쳐 datafrme 형태로 만들기
> bus<-data.frame(weekday,weekend)
> t(bus)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16]
weekday 46303 46819 10425 26407 24704 3567 68392 27746 38190 10557 24399 38005 7285 6514 19583 556
weekend 38287 34606 8589 21099 16524 2300 54344 23171 29119 6228 19570 28800 3384 3196 12933 190
[,17] [,18]
weekday 1367 9133
weekend 1563 7941
이와 같이 bus 라는 dataframe을 만들었다.
5) barplot 그래프 그리기
평일과 주말을 barplot으로 나란히 나타내어 색으로 구분하여 표현함
bplot<-barplot(bus2,main=paste("광명시 버스노선별 이용객수"),ylim=c(0,70000)
,col=c('green','yellow'),ylab="전체이용승객",las=2,beside=T,names.arg=data$X[4:21*2-3])
text(x=bplot,y=bus2*0.95,labels=bus2,col="red",cex=0.7)
abline(h=seq(5000,70000,5000),col="white",lty=2,lwd=2)
#5000부터 70000까지 50000단위로 가로줄 긋기
legend(42,60000,c("평일","주말"),cex=1,col=c("green","yellow"),lty=1,lwd=5,bg="white")
6) 결과
'빅데이터 > R을 이용한 빅데이터분석' 카테고리의 다른 글
연도별 요양 기관별 보험 청구 건수 분석 - plot() in r (0) | 2018.09.12 |
---|---|
R 그래프 기초 2 - barplot() (1) | 2018.09.10 |
R 그래프 기초1 - plot() (1) | 2018.09.10 |
textmining - wordcloud (2) | 2018.09.04 |
R 데이터 형태 ( vector, matrix, array, list, dataframe) (0) | 2018.08.31 |