준호씨의 블로그

Head First Data Analysis, 헤드퍼스트 데이터분석 9장 예제 실행방법 본문

IT이야기

Head First Data Analysis, 헤드퍼스트 데이터분석 9장 예제 실행방법

준호씨 2016. 12. 12. 23:26
반응형


9장 R 예제에 보면 다음과 같은 내용이 있다.
source("http://www.hanb.co.kr/exam/2011/hfda.R")

하지만 안된다.
> source("http://www.hanb.co.kr/exam/2011/hfda.R")
Error in source("http://www.hanb.co.kr/exam/2011/hfda.R") :
  http://www.hanb.co.kr/exam/2011/hfda.R:1:1: unexpected '<'
1: <
    ^

해당 URL 로 접근하면 http://download.hanbit.co.kr/exam/2011/ 로 리다이렉트 된다.

그래서 경로를 바꿔 보면 다음과 같이 된다.

하지만 또다시 에러
> source("http://download.hanbit.co.kr/exam/2011/hfda.R")
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
  cannot open URL 'http://www.hanb.co.kr/2011/hfda_ch09_employees_kr.csv': HTTP status was '404 Not Found'

http://download.hanbit.co.kr/exam/2011/hfda.R 의 내용을 보면 다음과 같음을 알 수 있다.
employees <- read.csv("http://www.hanb.co.kr/2011/hfda_ch09_employees_kr.csv",header=TRUE)

경로가 또 틀린 것이다.

앞서 경험을 되살려서 다시 해 보면 다음과 같이 바꿀 수 있음을 알 수 있다.

하지만 또 다시 마주치는 오류
> employees <- read.csv("http://download.hanbit.co.kr/exam/2011/hfda_ch09_employees_kr.csv", header=TRUE)
Error in make.names(col.names, unique = TRUE) :
  invalid multibyte string at '<c0>λ<f3><b7><fc>'

예제 파일은 euc-kr 인데 os 환경이 utf-8 이라 그런듯 함. 마지막에 fileEncoding 옵션을 추가 하면 잘 된다.
employees <- read.csv("http://download.hanbit.co.kr/exam/2011/hfda_ch09_employees_kr.csv",header=TRUE,fileEncoding = "euc-kr")

hist(employees$인상률, breaks=50)

하지만 한글이 깨진다. 뭔가 설정을 찾으면 될 거 같지만 이제는 다 귀찮다.



이제 다 귀찮다. 영문판 예제를 찾아 보았다. 잘 동작한다.
source("http://www.headfirstlabs.com/books/hfda/hfda.R")
hist(employees$received, breaks=50)
sd(employees$received)
summary(employees$received)
hist(employees$received[employees$year == 2007], breaks = 50)
hist(employees$received[employees$year == 2008], breaks = 50)
hist(employees$received[employees$gender == "F"], breaks = 50)
hist(employees$received[employees$gender == "M"], breaks = 50)
hist(employees$received[employees$negotiated == FALSE], breaks = 50)
hist(employees$received[employees$negotiated == TRUE], breaks = 50)



반응형
Comments