Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 변수 선언
- c()
- data frame
- seq
- vector 비교
- TXT
- factor
- Data Structure
- stringr
- R 기초
- 스크래핑
- 문자열처리
- length
- vector 연산
- ROTTEN TOMATOES
- CSV
- working directory
- :
- 데이터 타입
- 네이버 영화 댓글
- 데이터 입출력
- 정규표현식
- R 개요
- 함수
- 연습문제
- scraping
- REP
- Crawling
- 데이터 타입의 우선순위
- Names
Archives
- Today
- Total
study blog
R에서 JSON 데이터 처리(jsonlite, httr 패키지) 본문
JSON 데이터 받아서 data frame 생성하기
- Network을 통해서 JSON 데이터를 받아서 Data Frame으로 만들기 위해 새로운 package를 이용
1) 도서검색 데이터 불러와서 저장하기
1-1) package 설치
install.packages("jsonlite") #json처리하는데 많이 사용하는 패키지
install.packages("httr") #network 사용하는데 필요한 패키지들
1-2) package를 사용하기 위해 loading작업 필요
library(jsonlite); library(httr)
1-3) 문자열 처리하기 위한 package
library(stringr)
1-4) 주소 완성하기 (request_url)
url <- "http://localhost:8080/bookSearch/search?keyword="
request_url <- str_c(url, scan(what=character())) #str_c : stringr 패키지 내에 있는 문자열 결합 함수
# 검색어에 검색할 단어 입력 : java -> 한글 치면 오류뜸 !
# 한글 처리가 되도록 해보자 (인코딩 변경)
request_url <- URLencode(request_url) #URLencode: 특정 문자set으로 해당 문자열을 바꿔주겠다
request_url #해보면 한글이 유니코드형태로 바뀌어서 나오는 것을 볼 수 있음
df <- fromJSON(request_url) #데이터프레임 형태로 나옴
View(df) #data frame형태로 보여줌. V: 대문자
str(df) #12행 4열 #str(): data frame의 구조를 파악
names(df) #data frame혹은 matrix의 column명 검색
1-5) 찾은 도서 제목 console에 출력하기
for(idx in 1:nrow(df)){
print(df$title[idx])
}
1-6) JSON을 이용해서 data frame 생성
# data frame을 csv형식(,로 구분된 값)으로 파일에 저장
write.csv(df, #파일 생성
file="C:/R_lecture/data/book.csv",
row.names=F,
quote=F) # ""사라짐 -> ,나오는 경우(ex.저자 여러명) 문제생김
(+) Data Frame을 JSON으로 변경하려면 어떻게 하나요?
df_json <- toJSON(df)
prettify(df_json) # prettify(): json 예쁘게 보여줌
write(df_json, #문자열 출력할거기 때문에(csv형식 아니므로 ) .csv안
file="C:/R_lecture/data/book_json.txt")
write(prettify(df_json), #구조화시켜 알아보기 쉽게. 그러나 크기 커지므로 prettify 잘 사용 안함
file="C:/R_lecture/data/book_json2.txt")
2) 박스오피스 자료
# 2018년 10월 30일 박스오피스 제목과 누적 관람객 수 csv파일로 저장
boxOffice <- "http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=a96309aef828bcb00e744d6f2cf738bc&targetDt=20181030"
df <- fromJSON(boxOffice) # 주소에 있는 파일 json으로 읽어들이기
write.csv(df, #파일 생성
file="C:/R_lecture/data/boxOffice.csv",
row.names=F,
quote=F) # ""사라짐 -> ,나오는 경우(저자 여러명) 문제생김
2-1) 데이터에서 필요한 내용만 추출 -> data frame으로 뽑아와서 만들기
# 얻어온 데이터에서 필요한 내용만 추출해서 data frame을 새로 생성한 후 파일 출력
myDf <- df$boxOfficeResult$dailyBoxOfficeList[c("movieNm","audiAcc")]
write.csv(myDf, #파일 생성
file="C:/R_lecture/data/myBoxOffice.csv",
row.names=F,
quote=F) # ""사라짐 -> ,나오는 경우(저자 여러명) 문제생김
2-2) 데이터에서 필요한 내용만 추출 -> for문 이용해서 만들기
myDf2 <- df$boxOfficeResult$dailyBoxOfficeList
myMovieNm = c(); myAudiAcc =c();
# myMovieNm2 = c(); myAudiAcc2 =c();
for(idx in 1:nrow(myDf2)){
myMovieNm <- c(myMovieNm,myDf2$movieNm[idx])
myAudiAcc <- c(myAudiAcc,myDf2$audiAcc[idx])
#append 이용해서 붙이기
#myMovieNm2 <- append(myMovieNm2,myDf2$movieNm[idx])
#myAudiAcc2 <- append(myMovieNm2,myDf2$audiAcc[idx])
}
x <- data.frame("영화제목"=myMovieNm,"누적관객수"=myAudiAcc)
write.csv(x, #파일 생성
file="C:/R_lecture/data/myBoxOffice2.csv",
row.names=F,
quote=F) # ""사라짐 -> ,나오는 경우(저자 여러명) 문제생김
2-3) 데이터에서 필요한 내용만 추출 -> for문 안에서 파일 생성해서 내용 추가하기
# data frame에서 로직처리(for문)해서 데이터를 추출해 text파일에 append해서 파일 출력
myDf3 <- df$boxOfficeResult$dailyBoxOfficeList
write.csv(NULL, #파일 생성
file="C:/R_lecture/data/myBoxOffice3.csv",
row.names=F,
quote=F )
for(idx in 1:nrow(myDf3)){
write.table(myDf3$movieNm[idx], #파일 생성
file="C:/R_lecture/data/myBoxOffice3.csv",
row.names=F,
quote=F,
append=T
)
}
'R > 3. 데이터 조작' 카테고리의 다른 글
reshape2 패키지로 데이터 형태 변환 (0) | 2020.01.15 |
---|---|
dataframe 조작 - R내장 함수, plyr, dplyr (0) | 2020.01.14 |
Comments