digital_media_contents/infographics_lecture

R 특강 1 - 데이터 불러오기 및 막대 그래프 그리고 PDF로 만들어서 일러로 가져가기

jisunlee 2013. 10. 1. 10:46

오브젝트를 설정하고 그 안에 데이터를 넣을 수 있고 오브젝트끼리 연산도 가능 

> a <- 1

> a

[1] 1

> b <- 1:10

> b

 [1]  1  2  3  4  5  6  7  8  9 10

> c <- c("a","b","c")

> c

[1] "a" "b" "c"

> d <- 1:10

> e <- 11:20

> d+e

 [1] 12 14 16 18 20 22 24 26 28 30


a 오브젝트 하나만 데이터를 지우려면

> rm(a)

확인해보면... 

> ls()

[1] "b" "c" "d" "e"


데이터를 모두 지울때 

> rm(list=ls(all=T))

> rm(list=ls())

확인해 보면

> ls()

character(0)


> help (mean)

starting httpd help server ... done


hotdogs <- read.csv("http://datasets.flowingdata.com/hot-dog-contest-winners.csv", sep=",", header=TRUE)


데이터 화일 


hot-dog-contest-winners.csv


파인더 윈도우를 열어서 화일 위치를 확인한뒤에 데이터를 읽을 수 있음

> read.csv("/Users/jisunlee/Documents/hot-dog-contest-winners.csv")


이것을 R의 오브젝트(객체)로 만들어서 써야 한다. 이래야 램위에 데이터가 올라가 있고 이것을 가지고 만들 수 있음 

> testhotdogs <- read.csv("/Users/jisunlee/Documents/hot-dog-contest-winners.csv")


이것을 다시 csv화일로 자신의 컴퓨터에 저장 할수도 있음 

> write.csv(testhotdogs, "/Users/jisunlee/Documents/testhotdogs.csv")


원하는 데이터 열 예를 들면 Dogs.eaten 열을 가져오는 코드를 가져 올수 있다. 

> testhotdogs$Dogs.eaten

 [1]  9.10 11.00 11.00 19.50  9.50 11.75 15.50 12.00 14.00 13.00 16.00 21.50 19.00 17.00 20.00 19.50 22.25 24.50 19.00 20.25 25.13 50.00 50.50 44.50 53.50

[26] 49.00 53.75 66.00 59.00 68.00 54.00


만약 연도를 가져 오고 싶다면 

> testhotdogs$Year

 [1] 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009

[31] 2010


head 라는 함수를 쓰면 여섯줄만 데이터를 열어서 볼 수 있음 


> head (testhotdogs)

  Year                       Winner Dogs.eaten       Country New.record

1 1980 Paul Siederman & Joe Baldini       9.10 United States          0

2 1981              Thomas DeBerry       11.00 United States          0

3 1982               Steven Abrams       11.00 United States          0

4 1983                 Luis Llamas       19.50        Mexico          0

5 1984               Birgit Felden        9.50       Germany          0

6 1985             Oscar Rodriguez       11.75 United States          0


table을 이용하여서 2X2 로 표시할수 있음 

신기록을 세우지 못했으면 0 셀에 1이 표시되고 1셀에 1이 표시되면 뉴레코드를 세웠다는 것을 추출해 낼 수 있음 

> table (testhotdogs$Year, testhotdogs$New.record)

      

       0 1

  1980 1 0

  1981 1 0

  1982 1 0

  1983 1 0

  1984 1 0

  1985 1 0

  1986 1 0

  1987 1 0

  1988 1 0

  1989 1 0

  1990 1 0

  1991 0 1

  1992 1 0

  1993 1 0

  1994 1 0

  1995 1 0

  1996 0 1

  1997 0 1

  1998 1 0

  1999 1 0

  2000 0 1

  2001 0 1

  2002 0 1

  2003 1 0

  2004 0 1

  2005 1 0

  2006 0 1

  2007 0 1

  2008 1 0

  2009 0 1

  2010 1 0

 

이것을 막대 그래프로 그리면 핫도그를 먹은 데이터를 그릴수 있음 새창이 뜨면서 막대 그래프가 그려짐. 

> barplot (testhotdogs$Dogs.eaten)


막대그래프에 연도를 넣어서 표시 할 수 있음 

> barplot (testhotdogs$Dogs.eaten, names.arg=testhotdogs$Year)


색상을 빨간색으로 주고, 보더는 빼고, x축과 y축의 라벨을 붙여주는 경우

> barplot(testhotdogs$Dogs.eaten, names.arg=testhotdogs$Year, col="red", border=NA, xlab="Year", ylab="Hot dogs and buns (HDB) eaten")


편집기를 열어서 여러줄의 코드를 쓸수 있음 

R의 위의 아이콘 중에 프린터 아이콘 옆에 있는 빈 문서 아이콘을 선택한 다음에 R편집기를 열어서 여러줄을 코드를 써 볼수 있음 


> fill_colors <- c()

> for(i in 1:length(testhotdogs$New.record) ) {

+   if(testhotdogs$New.record[i] == 1) {

+      fill_colors <- c(fill_colors, "#821122")

+   } else {

+      fill_colors <- c(fill_colors, "#cccccc")

+   }

+ } 



미국인 경우에는 색상이 있는 그래프로, 미국이 아닌경우에는 회색으로 표시됨 

헥사코드 색상을 선택해서 이용할수 있음 

http://0to255.com

위의 사이트에서도 선택가능 


이것을 확인해 보면 아래와 같이 데이터에 따라서 색상이 다르게 표시되는 결과를 볼수 있다. 

> fill_colors

 [1] "#cccccc" "#cccccc" "#cccccc" "#cccccc" "#cccccc" "#cccccc" "#cccccc" "#cccccc" "#cccccc" "#cccccc" "#cccccc" "#821122" "#cccccc" "#cccccc" "#cccccc"

[16] "#cccccc" "#821122" "#821122" "#cccccc" "#cccccc" "#821122" "#821122" "#821122" "#cccccc" "#821122" "#cccccc" "#821122" "#821122" "#cccccc" "#821122"

[31] "#cccccc"


이것을 막대 그래프로 표시해 보면 다음과 같다. 

> barplot(testhotdogs$Dogs.eaten, names.arg=testhotdogs$Year, col=fill_colors, border=NA, xlab="Year", ylab="Hot dogs and buns (HDB) eaten")


타이틀을 넣고 공간을 적당하게 띄어서 표기하고자 하면 아래와 같이 입력하면 됨 

> barplot(testhotdogs$Dogs.eaten, names.arg=testhotdogs$Year, main="Nathan's Hot Dog Eating Contest Results, 1980-2010", col=fill_colors, border=NA, space=0.3, xlab="Year", ylab="Hot dogs and buns (HDB) eaten")


비쥬얼라이즈 디스 그림 4-11 144 페이지의 그래프를 지금 까지 만들어 봤음 


이것을 R에서 그래프를 선택한뒤에 화일을 저장하면  pdf로 저장할수 있고 일러에서 불러서 

그룹을 해제하고 투명 오브젝트를 지운뒤에 원하는 도형을 선택하여서 쓸수 있다. 


데이타 프레임. 글자 문자등이 섞여서 한셀씩 이루어 가는 것

data matrix 데이타 메이트릭스. 데이터 형이 한가지 형태로 되어 있는것. 


> hot_dog_places <- read.csv("http://datasets.flowingdata.com/hot-dog-places.csv",  sep=",", header=TRUE)

> hot_dog_places

  X2000 X2001 X2002 X2003 X2004 X2005 X2006 X2007 X2008 X2009 X2010

1    25  50.0  50.5  44.5  53.5    49    54    66    59  68.0    54

2    24  31.0  26.0  30.5  38.0    37    52    63    59  64.5    43

3    22  23.5  25.5  29.5  32.0    32    37    49    42  55.0    37

우선 데이터를 위처럼 불러오고. 이형태는 데이터 프레임인데. 이걸 계산할수 있도록 데이터 메이트릭스로 바꾸어줌 


> names(hot_dog_places) <- c("2000","2001","2002","2003", "2004","2005","2006","2007","2008","2009","2010")  

> hot_dog_matrix <- as.matrix(hot_dog_places)

> hot_dog_matrix

     2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010

[1,]   25 50.0 50.5 44.5 53.5   49   54   66   59 68.0   54

[2,]   24 31.0 26.0 30.5 38.0   37   52   63   59 64.5   43

[3,]   22 23.5 25.5 29.5 32.0   32   37   49   42 55.0   37

그러면 데이터 메트릭스로 바꾸어짐


이것을 가지고 누적 그래프를 그릴 수 있음 

> barplot(hot_dog_matrix, border=NA, space=0.25, ylim=c(0,200), xlab="Year", ylab="Hot dogs and buns (HDBs) eaten", main="Hot Dog Eating Contest Results, 1980-2010")


세개의 색상을 넣는다고 하면 col 을 더 넣어서 지정하면 됨 

> barplot(hot_dog_matrix, border=NA, space=0.25, ylim=c(0,200), xlab="Year", ylab="Hot dogs and buns (HDBs) eaten", col = c(1,2,3), main="Hot Dog Eating Contest Results, 1980-2010")



라이브러리를 불러오고

이것을 로드해야 됨을 잊지 말것 

install.packages("portfolio")

library(portfolio)



새로운 그래프를 검색하고 싶다면 

구글에서 이미지 검색에 아래를 검색단어로 입력하고 선택하여 볼것 

plot in r


ehjamg@begas.co.kr

wjpark@begas.co.kr