엑셀에서 원하는 부분만 선택 후 ctrl+c 로 복사하세요.

그 후 아래 명령을 수행하세요

 

> fruits6 <- read.delim("clipboard",header=T)

> fruits6

  no   name price qty

1  1   apple   500   6

2  2 banana   400   4

3  3  peach   300   3

4  4   berry   200   2




write.table( ) 함수로 파일에 저장하기


> write.table(fruits6,'fruits6.txt')

> fruits6_2 <- read.table('fruits6.txt',header=T)

> fruits6_2

  no   name price qty

1  1  apple   500   6

2  2 banana   400   4

3  3  peach   300   3

4  4  berry   200   2




excel 파일 형식으로 저장하기 


> install.packages("WriteXLS")

> library(WriteXLS)

> name <- c("Apple","Banana","Peach")

> price <- c(300,200,100)

> item <- data.frame(NAME=name , PRICE=price)

> item

    NAME PRICE

1  Apple   300

2 Banana   200

3  Peach   100

> WriteXLS("item","item.xls")




XML 형식으로 저장하기


> install.packages("XML")

> library(XML)

> install.packages("kulife")

> library(kulife)

> name <- c('Apple','Banana','Peach')

> price <- c(300,200,100)

> item <- data.frame(NAME=name,PRICE=price)

> item

    NAME PRICE

1  Apple   300

2 Banana   200

3  Peach   100

> write.xml(item,file='item.xml')







readLines( ) / read.table( ) / read.csv( ) 의 차이점




> txt1 <- read.csv("csv_test.txt")    //정상적으로 불러집니다

> txt1 

  번호  이름 가격

1   1   사과 1000

2   2      배 2000

3      귤 3000



> txt2 <- readLines("csv_test.txt")     //파일의 여러 줄을 한 줄로 쭉 불러옵니다

> txt2

[1] "번호,이름,가격"  "1,사과,1000" "2,배,2000" "3,귤,3000" 

[5] "" "" 



> txt3 <- read.table("csv_test.txt")     //컬럼 구분을 하지 못합니다

> txt3 

         V1

1   번호,이름,가격

2     1, 사과, 1000

3     2,    배, 2000

4     3,    귤, 3000



> txt3 <- read.table("csv_test.txt",sep=",")     // sep 로 컬럼 구분은 했으나

> txt3                                                      //컬럼 이름을 자동으로 붙입니다. 

    V1    V2   V3

1  번호 이름 가격

2     1 사과  1000

3     2    배  2000

4     3    귤  3000



> txt3 <- read.table("csv_test.txt",sep=",",header=T)     //read.csv 와 동일합니다

> txt3 

  번호   이름    가격

1     1   사과   1000

2     2     배    2000

3     3     귤    3000







저장하는 다양한 방법들 정리하기


[readLines( ) -> write]


> txt1 <- readLines("write_test.txt")

> txt1

[1] "이 문장은 write 연습하는 문장인데" "별로 어렵지 않아요“

[3] "열심히 해주세요" 


> write(txt1,"write_test2.txt")

> txt2 <- readLines("write_test2.txt")

> txt2

[1] "이 문장은 write 연습하는 문장인데" "별로 어렵지 않아요" 

[3] "열심히 해주세요"










[read.table( ) -> write.table( ) 로 저장하기]




> txt1 <- read.table("table_test.txt",head=T)

> txt1 

  번호   이름   가격

1    1   사과   1000

2    2     배    2000

3    3     귤    3000

 

> write.table(txt1,"table_test2.txt")

> txt2 <- read.table("table_test2.txt",head=T)

> txt2 

  번호   이름   가격

1    1   사과   1000

2    2     배    2000

3    3     귤    3000









[read.csv( ) -> write.csv( ) 로 저장하기]




> txt1 <- read.csv("csv_test.csv")

> txt1 

  번호   이름   가격

1    1   사과   1000

2    2     배    2000

3    3     귤    3000


> write(txt1,"csv_test2.csv")     //에러 발생합니다

Error in cat(list(...), file, sep, fill, labels, append) : 

타입 'list'인 인자 1는 'cat'에 의하여 다루어 질 수 없습니다


> write.table(txt1,"csv_test2.csv")

> txt2 <- read.csv("csv_test2.csv")

>txt2     //아래 결과가 이상하죠? 

  번호.이름.가격

1    1 사과 1000

2    2 2 배 2000

 3 3 귤 3000


> write.csv(txt1,"csv_test3.csv")

> txt3 <- read.csv("csv_test3.csv")

> txt3     // 가장 왼쪽에 새로운 번호 부분이 추가로 생성되어 있습니다. 

   X  번호  이름  가격

1 1      1  사과  1000

2 2      2     배  2000

3 3      3     귤  3000










[readxl( ) -> write.xlsx( ) 로 저장하기]


>install.packages("xlsx")

>library(xlsx)

>write.xlsx(item, "item.xlsx")








출처

더알음 네이버카페 : http://cafe.naver.com/theareum

R라뷰 개정판 실습데이터 모음 :  https://www.dropbox.com/s/16ytsq4q3rdaro4/%EB%8D%94%EB%A7%8E%EC%9D%B4_R%EB%9D%BC%EB%B7%B0_%EA%B0%9C%EC%A0%95%ED%8C%90%EC%9A%A9_%EC%8B%A4%EC%8A%B5%EC%9A%A9_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EC%9D%8C.zip?dl=0


read.csv.sql( ) 명령 - 원하는 데이터를 SQL 쿼리로 불러 오기


> install.packages("googleVis")

 ( 설치 과정은 생략합니다 )

> library(googleVis)

> install.packages(“sqldf”)  

>library(sqldf) 


> Fruits

    Fruit Year Location Sales Expenses Profit       Date

1  Apples 2008     West    98       78     20 2008-12-31

2  Apples 2009     West   111       79     32 2009-12-31

3  Apples 2010     West    89       76     13 2010-12-31

4 Oranges 2008     East    96       81     15 2008-12-31

5 Bananas 2008     East    85       76      9 2008-12-31

6 Oranges 2009     East    93       80     13 2009-12-31

7 Bananas 2009     East    94       78     16 2009-12-31

8 Oranges 2010     East    98       91      7 2010-12-31

9 Bananas 2010     East    81       71     10 2010-12-31




> write.csv(Fruits,"Fruits_sql.csv",quote=F,row.names=F)

> fruits_2 <-read.csv.sql("Fruits_sql.csv",

+                       sql="SELECT * FROM file WHERE Year = 2008")

경고메시지:

사용되지 않는 커넥션 3 (Fruits_sql.csv)를 닫습니다 


> fruits_2

    Fruit   Year  Location  Sales Expenses  Profit    Date

1   Apples 2008     West    98       78     20       2008-12-31

2 Oranges 2008     East     96       81     15       2008-12-31

3 Bananas 2008     East     85       76      9        2008-12-31








기본 제공 데이터

> data()

> Nile

Time Series:

Start = 1871 

End = 1970 

Frequency = 1 

  [1] 1120 1160  963 1210 1160 1160  813 1230 1370 1140  995  935 1110  994 1020  960 1180  799  958 1140 1100 1210 1150 1250 1260 1220 1030 1100  774

 [30]  840  874  694  940  833  701  916  692 1020 1050  969  831  726  456  824  702 1120 1100  832  764  821  768  845  864  862  698  845  744  796

 [59] 1040  759  781  865  845  944  984  897  822 1010  771  676  649  846  812  742  801 1040  860  874  848  890  744  749  838 1050  918  986  797

 [88]  923  975  815 1020  906  901 1170  912  746  919  718  714  740



아래의 내용은 기본 데이터 자료 목록












xls (Microsoft Office Excel) 파일로부터 데이터 프레임에 저장하기


> install.packages("XLConnect") 

> library(XLConnect)

> setwd("c:\\r_temp")

> data1=loadWorkbook("fruits_6.xls",create=T)

> data2=readWorksheet(data1,sheet="sheet1",

+                     startRow=1 ,

+                     endRow=8 ,

+                     startCol=1 ,

+                     endCol=5)


> data2

  no   name price  qty

1  1  apple   500   6

2  2 banana   400   4

3  3  peach   300   3

4  4  berry    200   2


 







html 페이지에서 표 형식의 데이터 가져오기


이 페이지에 있는 데이터 가져올 것임

https://en.wikipedia.org/wiki/World_population


> install.packages("XML")

Installing package into ‘C:/Users/seojinsu/Documents/R/win-library/3.1’

( 지면 관계상 설치 과정은 생략하겠습니다.

> library(XML)

>install.packages("httr")

>library("httr")


> pop <- 'http://en.wikipedia.org/wiki/World_population'

> pop

[1] "http://en.wikipedia.org/wiki/World_population"

> pop_table <- readHTMLTable(pop)

> length(pop_table)

[1] 28       // 28 개의 테이블이 있다는 뜻입니다.


> pop_table <- readHTMLTable(pop,which=6)     //위 표는 html 페이지에서 6번째 테이블입니다.

> pop_table

 

   Rank Country / Territory    Population       Date          Approx.혻% of world\npopulation Source

1     1       China[note 2] 1,368,130,000 November 28, 2014                             19%   [83]

2     2               India 1,263,100,000 November 28, 2014                           17.5%   [84]

3     3       United States   319,163,000 November 28, 2014                           4.43%   [85]

4     4           Indonesia   252,164,800      July 1, 2014                             3.5%   [86]

5     5              Brazil   203,505,000 November 28, 2014                           2.82%   [87]

6     6            Pakistan   188,254,000 November 28, 2014                           2.61%   [88]

7     7             Nigeria   178,517,000      July 1, 2014                             2.48%   [89]

8     8          Bangladesh   157,390,000 November 28, 2014                           2.18%   [90]

9     9              Russia   146,068,400      June 1, 2014                             2.03%   [91]

10   10               Japan   127,130,000    August 1, 2014                            1.76%   [92]





> pop_table[,c(2,3)]        //2~3열 읽기

   Country / Territory    Population

1        China[note 2] 1,368,130,000

2                India 1,263,100,000

3        United States   319,163,000

4            Indonesia   252,164,800

5               Brazil   203,505,000

6             Pakistan   188,254,000

( 지면 관계상 이하 내용은 생략합니다 )







출처

더알음 네이버카페 : http://cafe.naver.com/theareum

R라뷰 개정판 실습데이터 모음 :  https://www.dropbox.com/s/16ytsq4q3rdaro4/%EB%8D%94%EB%A7%8E%EC%9D%B4_R%EB%9D%BC%EB%B7%B0_%EA%B0%9C%EC%A0%95%ED%8C%90%EC%9A%A9_%EC%8B%A4%EC%8A%B5%EC%9A%A9_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EC%9D%8C.zip?dl=0

현재 작업 디렉토리에 있는 리스트 읽어오기


> list.files( )

  [1] "1-4호선수송인원연도별.csv"                                

  [2] "1-4호선승하차승객수.csv"                                  

  [3] "153번_버스_승하차현황_2014_05월.csv"                      

  [4] "153번_버스_승하차현황_2014_06월.csv"                      

(내용이 많아서 이하 내용은 생략하겠습니다 )

 

> list.files(recursive=T)       // 하위 디렉토리 내용까지 전부 출력합니다

  [1] "1-4호선수송인원연도별.csv"                                

  [2] "1-4호선승하차승객수.csv"                                  

  [3] "153번_버스_승하차현황_2014_05월.csv"                      

  [4] "153번_버스_승하차현황_2014_06월.csv"

( 내용이 많아서 이하 내용은 생략하겠습니다)



> list.files(all.files=T)         // 숨김 파일까지 전부 보여줍니다.

  [1] "."                                                        

  [2] ".."                                                       

  [3] ".a.txt"                                                   

  [4] ".Rapp.history"                                            

  [5] ".RData"

( 내용이 많아서 이하 내용은 생략하겠습니다) 








scan( ) 함수로 텍스트 파일 읽어서 배열에 저장하기


> setwd("c:\\r_temp")               //데이터가 있는 작업용 디렉터리를 설정

> scan1 <- scan('scan_1.txt')        // scan1 변수에 저장

Read 4 items

> scan1

[1] 111 222 333 444         //기본적으로 배열로 저장이 됩니다


> scan2 <- scan('scan_2.txt')

Read 4 items

> scan2

[1] 1 2 3 4


> scan2 <- scan('scan_2.txt',what="")     //문자열

Read 4 items

> scan2

[1] "1.00" "2.00" "3.00" "4.00"


> scan3 <- scan('scan_3.txt',what="")

Read 4 items

> scan3

[1] "aaa" "bbb" "ccc" "ddd"


> scan4 <- scan('scan_4.txt',what="")

Read 4 items

> scan4

[1] "aaa"  "bbb"  "111"  "2.34"






> input <- scan( )         // 숫자 입력 받기

1: 1

2: 2

3: 3

4:         // 그만하려면 여기서 그냥 엔터

Read 3 items

> input

[1] 1 2 3


> input2 <- scan(what="")         //문자 입력 받을 때는 what="" 

1: a

2: b

3: 

Read 2 items

> input2

[1] "a" "b"






readline( ) 함수로 한 줄 읽어 들이기


> input3 <- readline()

R is very fun!  <-- 이렇게 입력 후 엔터 

> input3

[1] "R is very fun!"


> input4 <- readline("Are you OK? :" )

Are you OK? : Yes!!

> input4

[1] "Yes!!"







readLines( ) 함수로 파일 읽어 들여서 배열에 담기


> input5 <- readLines('scan_4.txt')

> input5

[1] "aaa"  "bbb"  "111"  "2.34"







> fruits <- read.table('fruits.txt')

> fruits

  V1     V2    V3  V4             //라벨명

1 no   name price  qty          //헤더 부분

2  1  apple   500   5

3  2 banana   200   2

4  3  peach   200   7

5  4  berry    50   9


> fruits <- read.table('fruits.txt',header=T)         //header 가 있다고 알려주기

> fruits

  no   name price qty

1  1  apple   500   5

2  2 banana   200   2

3  3  peach   200   7

4  4  berry    50   9









> fruit2 <- read.table('fruits_2.txt')         //주석은 자동 제외

> fruit2

  V1     V2  V3 V4

1  1   apple 500  6

2  2 banana 200  2

3  3   peach 200  7

4  4   berry  50  9


> fruit2 <- read.table('fruits_2.txt',skip=2)         //두 번째 행을 건너 뜀

> fruit2

  V1     V2  V3  V4

1  2 banana 200  2

2  3  peach 200  7

3  4   berry  50   9


> fruit2 <- read.table('fruits_2.txt',nrows=2)         //두 번째 행까지 출력

> fruit2

  V1     V2  V3 V4

1  1  apple 500  6

2 banana 200  2


> fruits3 <- read.table('fruits.txt',header=T,nrows=2)       

> fruits3

  no   name price qty

1  1  apple   500   5

2  2 banana   200   2


> fruits3 <- read.table('fruits.txt',header=F,skip=2,nrows=2)       //두 번째 행 건너뛰고, 두 번째 행까지 출력

> fruits3

  V1     V2  V3 V4

1  2 banana 200  2

2  3  peach 200  7








read.csv( ) 함수로 csv 불러오기


> fruit3 <- read.csv('fruits_3.csv')

> fruit3

  no   name price pty

1  1  apple   500   6

2  2 banana   200   2

3  3  peach   200   7

4  4  berry    50   9





라벨명이 없는 경우 


> fruit4 <- read.csv('fruits_4.csv')

> fruit4

  X1  apple X500 X6        // 이 부분이 문제가 됩니다.

1  2 banana  200  2

2  3  peach  200  7

3  4  berry   50  9

 

> fruit4 <- read.csv('fruits_4.csv',header=F)

> fruit4

  V1     V2  V3 V4

1  1   apple 500  6

2  2 banana 200  2

3  3   peach 200  7

4  4   berry   50  9






라벨명을 수동으로 지정


> label <- c('NO','NAME','PRICE','QTY')

> fruit4 <- read.csv('fruits_4.csv',header=F,col.names=label)

> fruit4

  NO   NAME PRICE QTY

1  1   apple   500   6

2  2 banana   200   2

3  3  peach   200   7

4  4  berry     50   9













출처

더알음 네이버카페 : http://cafe.naver.com/theareum

R라뷰 개정판 실습데이터 모음 :  https://www.dropbox.com/s/16ytsq4q3rdaro4/%EB%8D%94%EB%A7%8E%EC%9D%B4_R%EB%9D%BC%EB%B7%B0_%EA%B0%9C%EC%A0%95%ED%8C%90%EC%9A%A9_%EC%8B%A4%EC%8A%B5%EC%9A%A9_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EC%9D%8C.zip?dl=0

행렬


Matrix( ) 함수 


> mat1 <- matrix(c(1,2,3,4))      //기본적으로 열로 생성, 데이터형이 동일해야 함

> mat1

     [,1]

[1,]    1

[2,]    2

[3,]    3

[4,]    4


> mat2 <- matrix(c(1,2,3,4, 5, 6, 7, 8),nrow=2)     //2열

> mat2

     [,1] [,2] [,3] [,4]

[1,]    1    3    5    7

[2,]    2    4    6    8


> mat3 <- matrix(c(1,2,3,4),nrow=2,byrow=T)     //2열

> mat3

     [,1] [,2]

[1,]    1    2

[2,]    3    4


> mat3[ ,1]      //모든 행의 1 열 값을 출력

[1] 1 3


> mat3[1,]       //1행의 모든 열 값을 출력

[1] 1 2


> mat3[1,1]      //1행 1열의 값을 출력

[1] 1







새로운 행과 열 추가하기 - rbind( ) , cbind( ) 사용

> mat4 <- matrix(c(1,2,3

+                 ,4,5,6 

+                 ,7,8,9),nrow=3,byrow=T)

> mat4

     [,1] [,2] [,3]

[1,]    1    2    3

[2,]    4    5    6

[3,]    7    8    9


rbind( ) 로 행 추가

> mat4 <- rbind(mat4,c(11,12,13))      //마지막 행이 추가

> mat4

     [,1] [,2] [,3]

[1,]    1    2    3

[2,]    4    5    6

[3,]    7    8    9

[4,]    11   12   13  


> mat4 <- rbind(mat4,c(15,16,17,18)) <-- 길이가 다를 경우 아래처럼 에러

경고메시지:

In rbind(mat4, c(15, 16, 17, 18)) :

  number of columns of result is not a multiple of vector length (arg 2)


> mat5 <- matrix(c('a','b','c','d'),nrow=2,byrow=T)

> mat5

     [,1] [,2]

[1,] "a"  "b" 

[2,] "c"  "d" 


cbind( ) 로 열 추가

> mat5 <- cbind(mat5,c('e','f'))

> mat5

     [,1] [,2] [,3]

[1,] "a"  "b"  "e" 

[2,] "c"  "d"  "f"







컬럼 이름 지정하기

> colnames(mat5) <- c('First','Second','Third')

> mat5

     First Second Third

[1,] "a"   "b"    "e"  

[2,] "c"   "d"    "f"









Array(배열) 



> array1 <- array(c(1:12), dim=c(4,3))       // matrix처럼 2차원 배열, 1~12까지, 4행 3열로 출력

> array1

     [,1]   [,2]  [,3]

[1,]    1    5    9

[2,]    2    6   10

[3,]    3    7   11

[4,]    4    8   12


> array2 <- array(c(1:12), dim=c(2,2,3))      //3차원 배열 생성

> array2

, , 1         //1 층


     [,1] [,2]

[1,]    1    3

[2,]    2    4


, , 2        // 2층


     [,1] [,2]

[1,]    5    7

[2,]    6    8


, , 3        //3 층


     [,1] [,2]

[1,]    9   11

[2,]   10   12


> array2[1,1,3]        // x :1 , y : 1 ,z : 3 인 데이터를 조회

[1] 9










List 


list생성하고 조회하기 (서로 다른 데이터 유형 저장 가능)


> list1 <- list(name='James Seo' ,

+            address='Seoul' ,

+            tel='010-8706-4712',

+            pay=500)

> list1

$name                     // Key 부분

[1] "James Seo"          //Value 부분


$address

[1] "Seoul"


$tel

[1] "010-8706-4712"


$pay

[1] 500





특정 key 값만 조회하기

> list1$name

[1] "James Seo“


> list1[1:2]

$name

[1] "James Seo"


$address

[1] "Seoul"




List 에 새로운 요소 추가/삭제하기

> list1$birth  <- '1975-10-23'        //생일 추가

> list1

$name

[1] "James Seo"

 

$address

[1] "Seoul"

 

$tel

[1] "010-8706-4712"

 

$pay

[1] 500

 

$birth 

[1] "1975-10-23"





하나의 key 에 두개의 value 동시에 넣기

> list1$name <- c('Seojinsu','James Seo')

> list1$name

[1] "Seojinsu"  "James Seo"





특정 값 삭제하기

> list1$birth <- NULL

> list1

$name

[1] "Seojinsu"  "James Seo"


$address

[1] "Seoul"


$tel

[1] "010-8706-4712"


$pay

[1] 500











데이터 프레임 


벡터로부터 데이터 프레임 생성하기


> no <- c(1,2,3,4)

> name <- c('Apple','Peach','Banana','Grape')

> price <- c(500,200,100,50)

> qty <- c(5,2,4,7)

> sales <- data.frame(NO=no,NAME=name,PRICE=price,QTY=qty)

> sales

  NO   NAME PRICE QTY

1  1  Apple   500   5

2  2  Peach   200   2

3  3 Banana   100   4

4  4  Grape    50   7








행렬로부터 데이터 프레임 생성하기


> sales2 <- matrix(c(1,'Apple',500,5,

+                          2,'Peach',200,2,

+                          3,'Banana',100,4,

+                          4,'Grape',50,7),nrow=4,byrow=T)

> sales2

     [,1]      [,2]     [,3]  [,4]

[1,] "1"  "Apple"  "500" "5" 

[2,] "2"  "Peach"  "200" "2" 

[3,] "3"  "Banana" "100" "4" 

[4,] "4"  "Grape"  "50"  "7" 


> df1 <- data.frame(sales2)         //데이터프레임으로 변환

> df1

  X1     X2  X3 X4

1  1  Apple 500  5

2  2  Peach 200  2

3  3 Banana 100  4

4  4  Grape  50  7


> names(df1) <- c('NO','NAME','PRICE','QTY')        //라벨명 지정

> df1

  NO   NAME PRICE QTY

1  1     Apple   500   5

2  2     Peach   200   2

3  3   Banana   100   4

4  4    Grape     50   7







데이터 프레임에서 원하는 데이터만 조회하기


> sales

  NO   NAME  PRICE  QTY

1  1   Apple    500    5

2  2   Peach    200    2

3  3  Banana    100    4

4  4   Grape     50    7


 > sales$NAME        //NAME 열만 출력

[1] Apple  Peach  Banana Grape 

Levels: Apple Banana Grape Peach


> sales[1,3]        //1행 3열 출력

[1] 500


> sales[1,]        //1행 출력

NO  NAME PRICE QTY

1  1 Apple   500   5


> sales[,3]        //3열만 출력

[1] 500 200 100  50


> sales[c(1,2),]        //1~2행 출력, 행과 열은 ',' (콤마)위치로 구분, ')' (닫는 괄호)뒤에 ',' (콤마)

  NO  NAME PRICE QTY

1  1   Apple   500   5

2  2   Peach   200   2


> sales[,c(1,2)]        //1~2행 출력, c 앞쪽에 ',' (콤마)

  NO   NAME

1  1    Apple

2  2    Peach

3  3   Banana

4  4    Grape


> sales[,c(1:3)]        //1~3행 출력

  NO   NAME PRICE

1  1   Apple   500

2  2   Peach   200

3  3  Banana   100

4  4   Grape    50








subset( ) 으로 원하는 조건만 조회


> sales

  NO   NAME PRICE QTY

1  1  Apple   500   5

2  2  Peach   200   2

3  3 Banana   100   4

4  4  Grape    50   7

 

> subset(sales,qty<5)

  NO   NAME PRICE QTY

2  2   Peach   200   2

3  3  Banana   100   4

 

> subset(sales,price==200)  

  NO  NAME PRICE QTY

2  2   Peach   200   2


> subset(sales,name=='Apple')         //조건이 문자일 경우 반드시 '홑따옴표'나 "쌍따옴표" 처리

> subset(sales,name=='Apple')

  NO  NAME PRICE QTY

1  1   Apple   500   5





데이터 프레임 합치기 - rbind( ) , cbind( ) , merge( )사용하기


> no <- c(1,2,3)

> name <- c('apple','banana','peach')

> price <- c(100,200,300)


> df1 <- data.frame(NO=no,NAME=name,PRICE=price)

> df1

  NO   NAME PRICE

1  1  apple   100

2  2 banana   200

3  3  peach   300

 

> no <- c(10,20,30)

> name <- c('train','car','airplane')

> price <- c(1000,2000,3000)


> df2 <- data.frame(NO=no,NAME=name,PRICE=price)

> df2

  NO     NAME PRICE

1 10      train  1000

2 20       car  2000

3 30   airplane  3000



> df3 <- cbind(df1,df2)    //옆으로 붙이기

> df3

  NO   NAME PRICE  NO    NAME  PRICE

1  1    apple   100    10       train   1000

2  2  banana   200    20         car   2000

3  3   peach   300     30   airplane  3000


> df4 <- rbind(df1,df2)    //아래로 붙이기

> df4

  NO     NAME PRICE

1  1      apple    100

2  2    banana    200

3  3      peach    300

4 10       train   1000

5 20         car   2000

6 30   airplane   3000



> df1 <- data.frame(name=c('apple','banana','cherry'),    //값 변경하기

+                   price=c(300,200,100))

> df2 <- data.frame(name=c('apple','cherry','berry'),

+                   qty=c(10,20,30))

> df1

    name  price

1   apple   300

2 banana   200

3 cherry   100


> df2

    name  qty

1  apple   10

2  cherry  20

3  berry   30



> merge(df1,df2)     // df1기준으로 df2와 공통으로 있는 name 컬럼 데이터를 출력함

    name  price  qty

1  apple    300  10

2  cherry   100  20

 

> merge(df1,df2,all=T)  //데이터가 없는 것도 모두 나오게 all=T 옵션 지정

    name  price qty

1   apple   300  10

2 banana   200  NA       // df2 에 banana 가 없어서 NA 로 출력 

3  cherry   100  20

4   berry   NA  30         // df1 에 berry 가 없어서 NA 로 출력

 

> cbind(df1,df2)     // df1 과 df2 를 합쳐서 하나의 데이터프레임으로 만듦

    name   price   name qty

1   apple   300   apple  10

2  banana   200  cherry  20

3  cherry    100   berry  30

 

> cbind(df2,df1)

name  qty   name  price

1  apple   10   apple   300

2  cherry  20  banana   200

3  berry   30   cherry   100






데이터 프레임에 행과 열 추가하기


> df1

    name price

1  apple   300

2 banana   200

3 cherry   100

 

> new <- data.frame(name="mango",price=400)      // 추가할 내용을 생성

> df1 <- rbind(df1,new)                                        // rbind로 행을 추가

> df1

    name  price

1  apple   300

2 banana   200

3  cherry   100

4  mango   400

 

> df1 <- rbind(df1,data.frame(name="berry",price=500))      // 이렇게도 가능

> df1

    name   price

1   apple    300

2  banana   200

3   cherry   100

4  mango   400

5   berry   500


> df1 <- cbind(df1,data.frame(qty=c(10,20,30,40,50)))       // 열 추가하기

> df1

    name   price  qty

1    apple    300  10

2  banana    200  20

3   cherry    100  30

4  mango    400  40

5    berry    500  50







데이터 프레임에서 특정 컬럼들만 골라내서 새로운 형태 만들기


> no <- c(1,2,3,4,5)

> name <- c("서진수","주시현","최경우","이동근","윤정웅")

> address <- c("서울","대전","포항","경주","경기")

> tel <- c(1111,2222,3333,4444,5555)

> hobby <- c("독서","미술","놀고먹기","먹고놀기","노는애감시하기")


> member <- data.frame(NO=no,NAME=name,

+                       ADDRESS=address,TEL=tel,HOBBY=hobby)

> member

  NO   NAME ADDRESS   TEL             HOBBY

1  1   서진수       서울   1111                독서

2  2   주시현       대전   2222                미술

3  3   최경우       포항   3333           놀고먹기

4  4   이동근       경주   4444           먹고놀기

5  5   윤정웅       경기   5555  노는애감시하기



> member2 <- subset(member,select=c(NO,NAME,TEL))      //특정 컬럼만 지정

> member2

  NO   NAME  TEL

1  1   서진수  1111

2  2   주시현  2222

3  3   최경우  3333

4  4   이동근  4444

5  5   윤정웅  5555


 

> member3 <- subset(member,select= -TEL)      //특정 컬럼만 제외하기

> member3

  NO   NAME ADDRESS        HOBBY

1  1   서진수    서울            독서

2  2   주시현    대전            미술

3  3   최경우    포항        놀고먹기

4  4   이동근    경주        먹고놀기

5  5   윤정웅    경기  노는애감시하기



> colnames(member3) <- c("번호","이름","주소","취미")     // 열 이름 변경하기

> member3

   번호   이름  주소                취미

1    1 서진수  서울                 독서

2    2 주시현  대전                 미술

3    3 최경우  포항           놀고먹기

4    4 이동근  경주           먹고놀기

5    5 윤정웅  경기   노는애감시하기







데이터 프레임의 내용 확인 및 출력 순서 지정하기






> sales

  NO   NAME PRICE QTY

1  1   Apple   500   5

2  2   Peach   200   2

3  3  Banana   100   4

4  4   Grape    50   7


> ncol(sales)    //data frame 열의 개수

[1] 4


> nrow(sales)    //data frame 행의 개수

[1] 4


> names(sales)    //data frame 열 이름 출력

[1] "NO"    "NAME"  "PRICE" "QTY"  


> rownames(sales)    //data frame 행 이름 출력

[1] "1" "2" "3" "4"


> sales[c(2,3,1),]      // 행의 출력 순서 조정 (열도 조정 가능)

  NO   NAME PRICE QTY

2  2   Peach   200   2

3  3  Banana   100   4

1  1   Apple   500   5















출처

더알음 네이버카페 : http://cafe.naver.com/theareum

R라뷰 개정판 실습데이터 모음 :  https://www.dropbox.com/s/16ytsq4q3rdaro4/%EB%8D%94%EB%A7%8E%EC%9D%B4_R%EB%9D%BC%EB%B7%B0_%EA%B0%9C%EC%A0%95%ED%8C%90%EC%9A%A9_%EC%8B%A4%EC%8A%B5%EC%9A%A9_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EC%9D%8C.zip?dl=0

> var1 <- "aaa"   //var1 이라는 변수에 문자형 데이터 담기

> var1

[1] "aaa"


> var2 <- 111     //var2 라는 변수에 숫자형 데이터 담기

> var2

[1] 111


> var3 <- Sys.Date( )  //var3 라는 변수에 날짜형 데이터 담기

> var3

[1] "2014-11-14"


> var4 <- c("a","b","c")   //여러 건의 데이터 한꺼번에 담기

> var4

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


> 111 -> var5 -> var6  //같은 값을 연속적으로 할당

> var5

[1] 111

> var6

[1] 111


> var8 <- var9 <- 222  

> var8

[1] 222

> var9

[1] 222




문자열 저장


> string1 <- "Very Easy R Programming"

> string1

[1] "Very Easy R Programming"





뒤에 있는 형으로 전체 형이 결정된다

> comp <- c(1,"2")

> comp

[1] "1" "2"


> class(Comp)

[1] "character"




연속적인 값 대입

> seq1 <- 1:5

> seq1

[1] 1 2 3 4 5




연속적인 일(day) 추가하기 

> date1 <- seq(from=as.Date('2014-01-01'), to=as.Date('2014-01-31'),by=1) 

> date1

 [1] "2014-01-01" "2014-01-02" "2014-01-03" "2014-01-04" "2014-01-05" "2014-01-06"

 [7] "2014-01-07" "2014-01-08" "2014-01-09" "2014-01-10" "2014-01-11" "2014-01-12"

[13] "2014-01-13" "2014-01-14" "2014-01-15" "2014-01-16" "2014-01-17" "2014-01-18"

[19] "2014-01-19" "2014-01-20" "2014-01-21" "2014-01-22" "2014-01-23" "2014-01-24"

[25] "2014-01-25" "2014-01-26" "2014-01-27" "2014-01-28" "2014-01-29" "2014-01-30"

[31] "2014-01-31"




월 추가하기

> date2 <- seq(from=as.Date('2014-01-01'), to=as.Date('2014-05-31'),by='month')  

> date2

[1] "2014-01-01" "2014-02-01" "2014-03-01" "2014-04-01" "2014-05-01“




년 추가하기

> date3 <- seq(from=as.Date('2014-01-01'), to=as.Date('2020-05-31'),by='year')   

> date3

[1] "2014-01-01" "2015-01-01" "2016-01-01" "2017-01-01" "2018-01-01" "2019-01-01"

[7] "2020-01-01"




생성한 변수 모두 확인하기

> objects( )

 [1] "char1"   "Comp"    "num1"    "num2"    "seq1"    "string1" "string2"

 [8] "var1"    "var2"    "var3"    "var4"    "var5"    "var6"    "var8"   

[15] "var9"



objects(all.names=T)

변수명을 . 으로 시작하면 숨김 변수가 됩니다. 

이런 변수들은 objects( ) 함수를 기본값으로 사용할 경우에는 안보이고 objects(all.names=T) 라는 속성을 써줘야 조회가 된다




변수에 담아 둔 값 제거하기


> rm(str1)  // str1 변수 삭제


> rm(list=ls( ))  //모든 변수 삭제






벡터-많은 양의 데이터 다루기


> c(1,2,3,4,5)  //모두 숫자형으로 이루어진 벡터

[1] 1 2 3 4 5


> c(1,2,3,4,"5")  //마지막 요소가 문자라서 모두 문자로 변환되었습니다.

[1] "1" "2" "3" "4" "5"


> vec1 <- c(1,2,3,4,5)

> vec1

[1] 1 2 3 4 5


> vec1[3]  //3번째 요소 값만 출력

[1] 3


> vec1[-3]  //마이너스를 붙일 경우 3번째만 빼고 출력

[1] 1 2 4 5


> vec1[1:(length(vec1)-2)]  //vec1 의 총 길이에서 2 개를 뺀 개수만큼 출력

[1] 1 2 3


> vec1[-1:-3]  //1번-3번 요소를 뺀 나머지만 출력합

[1] 4 5


> vec1[2:4]  //2번째부터 4번째까지의 요소 값들

[1] 2 3 4


> vec1[2]  //vec1 벡터의 2번째 항목

[1] 2


> vec1[2] <- 6  //vec1[2] 항목의 값을 6으로 변경

> vec1

[1] 1 6 3 4 5


> vec1 <- c(vec1,7)  // 벡터에 새로운 내용을 추가

> vec1

[1] 1 6 3 4 5 7


> vec1[9] <- 9

> vec1

[1]  1  6  3  4  5  7 NA NA  9  // NULL이 아닌 NA로 출력


> append(vec1,10,after=3) // 3 다음 위치에 10을 넣기

 [1]  1  6  3  10  4  5  7 NA NA  9


> append(vec1,c(10,11),after=3)

 [1]  1  6  3  10  11  4  5  7 NA NA  9


> vec2 <- c(1,2,3,3,4,5)

> vec2

[1] 1 2 3 3 4 5


> append(vec2,10,after=3)  //3번째 위치 뒤에 10을 넣기

[1]  1  2  3 10  3  4  5


> append(vec2,11,after=3)  // 3번째 위치 뒤에 11을 넣으라고 하니까 10이 사라짐

[1]  1  2  3 11  3  4  5


> append(vec2,11,after=0)  // 0 은 가장 앞자리

[1] 11  1  2  3  3  4  5






백터 연산


> c(1,2,3) + c(4,5,6)

[1] 5 7 9


> c(1,2,3) + 1

[1] 2 3 4


> var1 <- c(1,2,3)

> var2 <- c(3,4,5)

> var1 + var2

[1] 4 6 8


> var3 <- c('3','4',5) //문자형

> var1 + var3 //오류!


> union(var1,var3) //데이터 형이 다를 경우 union 을 사용

[1] "1" "2" "3" "4" "5"


> var1

[1] 1 2 3


> var2

[1] 3 4 5


> var1 - var2

[1] -2 -2 -2


> setdiff(var1,var2) //var1 에 있는데 var2 에 없는 요소 출력하기

[1] 1 2


> setdiff(var2,var1) //var2 에 있는데 var1 에 없는 요소 출력하기

[1] 4 5


> intersect(var1,var2) //var1 과 var2 에 공통적으로 있는 요소 찾기

[1] 3






벡터의 각 컬럼에 이름 지정하기


> fruits <- c(10,20,30)

> fruits

[1] 10 20 30


> names(fruits) <- c('apple','banana','peach')  //이름 지정

> fruits

 apple banana  peach 

    10     20     30






벡터에 연속적인 데이터 할당하기 - seq( ) , rep( )


> var5 <- seq(1,5) ; var5

[1] 1 2 3 4 5


> var6 <- seq(2,-2) ; var6

[1]  2  1  0 -1 -2


> var7 <- seq(1,10,2) ; var7  //2 씩 증가시키면서 값을 할당

[1] 1 3 5 7 9


> var8 <- rep(1:3,2) ; var8 //1~3까지 2번 반복

[1] 1 2 3 1 2 3


> var9 <- rep(1:3,each=2) ; var9 //1~3까지 각 2번씩 출력하며 반복

[1] 1 1 2 2 3 3







벡터의 길이 찾기 


> var1

[1] 1 2 3


> length(var1)

[1] 3


> NROW(var1)

[1] 3






벡터에 특정 문자의 포함 여부 찾기


> var7

[1] 1 3 5 7 9


> 3 %in% var7  //var7 에서 3 이 있는지 검색

[1] TRUE


> 4 %in% var7  // var7 에서 4 가 있는지 검색

[1] FALSE


















출처

더알음 네이버카페 : http://cafe.naver.com/theareum

R라뷰 개정판 실습데이터 모음 :  https://www.dropbox.com/s/16ytsq4q3rdaro4/%EB%8D%94%EB%A7%8E%EC%9D%B4_R%EB%9D%BC%EB%B7%B0_%EA%B0%9C%EC%A0%95%ED%8C%90%EC%9A%A9_%EC%8B%A4%EC%8A%B5%EC%9A%A9_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EC%9D%8C.zip?dl=0

1. NA : 잘못된 값이 들어 올 경우 (Not Applicable , Not Available)


> cat(1,NA,2) 

1 NA 2 


> sum(1,NA,2)  

[1] NA





2. NULL : 값이 없을 경우 


> cat(1,NULL,2)  

1 2>


> sum(1,NULL,2) 

[1] 3





밑에 dropbox에 있는 자료를 다운 받은 후, C에 새 폴더(r_temp)를 만든다.


> setwd("c:\\r_temp") 

> txt1 <- read.csv("factor_test.txt") // txt1에 연결한다


> factor1 <- factor(txt1$blood)

> factor1

 [1] O  A  O  B  AB A  B  O  B  B 

Levels: A AB B O


> summary(factor1) //각 항목별 레벨과 카운트 해줌

 A AB  B  O 

 2  1  4  3 


> sex1 <- factor(txt1$sex)

> summary(sex1)

남 여 

 7  3





날짜형 데이터


> Sys.Date()  

[1] "2014-11-13"


> Sys.time()  

[1] "2014-11-13 21:18:19 KST"


> date( )  

[1] "Thu Nov 13 21:19:58 2014"




문자를 날짜로 변환하기


> as.Date('2014-11-01')  //""도 사용가능

[1] "2014-11-01“


>as.Date('2014-11-01')+7 //7일 후 날짜 출력


> as.Date("2014/11/01") 

[1] "2014-11-01"


> as.Date("01-11-2014",format="%d-%m-%Y")  

[1] "2014-11-01"




> as.Date("2014년 11월 1일",format="%Y년 %m월  %d일")

[1] "2014-11-01"


> as.Date("01112014",format="%d%m%Y") 

[1] "2014-11-01"


> as.Date("011114",format="%d%m%y")  

[1] "2014-11-01"




기준 일자를 주고  몇 일 후 찾기


> as.Date(10,origin="2014-11-10")  //주어진 날짜기준으로 10일 후의 날짜

[1] "2014-11-20"


> as.Date(-10,origin="2014-11-10")  //주어진 날짜 기준으로 10일 이전 날짜

[1] "2014-10-31"




날짜연산


> "2014-11-30" - "2014-11-01"  //문자형(날짜형 아님)


> class("2014-11-30") 

[1] "character"


> as.Date("2014-11-30") - as.Date("2014-11-01") //날짜로 변경

Time difference of 29 days


> as.Date("2014-11-01") + 5    

[1] "2014-11-06"




POSIXlt 

날짜를 년,월,일 로 표시하는 리스트형이라는 클래스


POSIXct 

날짜는 연속적인 데이터로 인식해서 1970년을 기준으로 초 단위로 계산

R 고급과정에서 회귀분석 등을 할 때 주로 많이 사용




> as.Date("2014-11-01 20:00:00") - as.Date("2014-11-01 18:30")

Time difference of 0 days


> as.POSIXct("2014-11-01 20:00:00") - as.POSIXct("2014-11-01 18:30:30")

Time difference of 1.491667 hours




lubridate 패키지로 날짜와 시간 제어하기


> install.packages("lubridate")

> library(lubridate)

> date <- now( ) # 현재 날짜와 시간 넣기


> date

[1] "2014-11-24 20:15:11 KST"


> year(date) 

[1] 2014


> month(date,label=F) 

[1] 11


> month(date,label=T)

[1] 11

12 Levels: Jan < Feb < Mar < Apr < May < Jun < Jul < Aug < Sep < ... < Dec


> day(date)  

[1] 24


> wday(date,label=T) 

[1] 월

Levels: 일 < 월 < 화 < 수 < 목 < 금 < 토


> wday(date,label=F) //요일을 숫자로 출력 (일요일=1)

[1] 2


> date <- date - days(2) //2일 전 날짜 출력하기

> date

[1] "2014-11-22 20:15:11 KST"


> month(date) <- 2  //2월로 설정하기

> date

[1] "2014-02-22 20:15:11 KST"


> date+years(1)    //1 년 추가하기

[1] "2015-11-25 15:02:01 KST


> date+months(1) //1 개월 추가하기

[1] "2014-12-25 15:02:01 KST"


> date+hours(1)    //1 시간 추가하기

[1] "2014-11-25 16:02:01 KST"  


> date+minutes(1)  //1 분 추가하기

[1] "2014-11-25 15:03:01 KST"  


> date+seconds(1)   //1 초 추가하기

[1] "2014-11-25 15:02:02 KST"  


> date <- hm("22:30") ; date //시간 분 지정하기

[1] "22H 30M 0S"


> date <- hms("22:30:15") ; date //시간 분 초 지정하기

 [1] "22H 30M 15S"






출처

더알음 네이버카페 : http://cafe.naver.com/theareum

R라뷰 개정판 실습데이터 모음 :  https://www.dropbox.com/s/16ytsq4q3rdaro4/%EB%8D%94%EB%A7%8E%EC%9D%B4_R%EB%9D%BC%EB%B7%B0_%EA%B0%9C%EC%A0%95%ED%8C%90%EC%9A%A9_%EC%8B%A4%EC%8A%B5%EC%9A%A9_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EC%9D%8C.zip?dl=0

1. 숫자 출력


>print(1)

[1] 1


>print(1+2)

[1] 3


>1

[1] 1


>1+2

[1] 3


>1; 2; 3

[1] 1

[1] 2

[1] 3


> 1+2; 2+4

[1] 3

[1] 6


>5%%4 //나머지 구하기

[1] 1


> 10000000 //0 다섯 개 부터 이렇게 표현

[1] 1e+07


> 0.0001 //소수점 4자리수부터 이렇게 표현

[1] 1e-04


> '1' //문자

[1] "1" 


> as.numeric('1') + as.numeric('2')  //문자->숫자로 변환

[1] 3





2. 문자 출력


> 'First' 

[1] "First"


> "Second" 

[1] "Second"


> cat(1,':','a','\n',2,':','b') //숫자형, 문자형 데이터 여러 개를 한 번에 출력

1 : a 

2 : b





3. 숫자형 / 문자형 데이터 검사


> class('123')

[1] "character"


> class(123)

[1] "numeric"





평균값(mean)

중간값(median)




출처

더알음 네이버카페 : http://cafe.naver.com/theareum

R라뷰 개정판 실습데이터 모음 :  https://www.dropbox.com/s/16ytsq4q3rdaro4/%EB%8D%94%EB%A7%8E%EC%9D%B4_R%EB%9D%BC%EB%B7%B0_%EA%B0%9C%EC%A0%95%ED%8C%90%EC%9A%A9_%EC%8B%A4%EC%8A%B5%EC%9A%A9_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EC%9D%8C.zip?dl=0


이 링크로 들어가서 파일을 다운받고, 압축을 풀어서

C폴더에 r_temp라는 이름의 새 폴더를 만들고

거기에 자료들 넣은 후 실습하기


1. R / R studio 다운

R : https://cran.r-project.org/bin/windows/base/

R studio : https://www.rstudio.com/products/rstudio/download/#download


2. getwd()

현재 작업 디렉토리 알려줌





3. setwd("작업 디렉토리 명")

현재 작업 디렉토리를 변경


4. global environment(전역변수)

R studio에서 쓰는 변수는 전역변수이다.





5. 자바처럼 int, String 등 따로 형 결정해주지 않아도, 입력하는 값에 따라 형이 결정된다.


6. c는 함수형


7. Ctrl + L = 페이지 깨끗하게 제일 위로 보내줌

원래 있던 데이터는 History에 나옴











<<<8. 연습하기>>>


1) 사용할 자료 작업 디렉토리에 복붙

파일명 : dbook.R




2) 사용할 자료 불러오기

> source("dbook.R")

> load.packages(c("stringr", "ggplot2", "dplyr", "knitr"))


3) 기본 제공되는 자료

> summary(mtcars)


4) 요약된 자료 나옴

> mtcars


5) 전체 자료가 나옴

> write.table(mtcars, "mtcars_new.txt")

txt파일로 작업디렉토리에 저장됨


=========================

ex) "문자는 이렇게 저장되고"


숫자는 한 칸씩 띄어서 저장된다.

ex) 1 2 3 4 5

=========================


6) 다시 읽어 드리기

> cars=read.table("mtcars_new.txt", header = T)

> cars


=========================

header = T

파일에서 첫번째줄을 변수명으로 저장


sep = ","

데이터가 ","로 구분되었음을 지정

=========================


7) 클립보드에 저장 

ctrl+v하면 자료들이 붙여진다.

엑셀에 붙여넣기 해보면 알 수 있음.

> write.table(cars, "clipboard")


8) 데이터 상단 일부 보기

> head(cars)

데이터 앞부분 6개까지 보여줌


> head(cars, n=10)

데이터를 10개까지 보여줌


9) 데이터 하단 일부 보기

> tail(cars)

> tail(cars, n=15)


10) 맨 첫번째 칼럼(열) 보여줌

> rownames(cars)


11) 첫 번째 행의 이름들을 보여줌

> colnames(cars)


12) object명$항목명

> cars$mpg

mpg에 해당하는 값 전체를 보여줌


> cars$mpg[1]

첫번째 값 보여줌


> cars$mpg[1:5]

1~5번째 값 보여줌


13)  컬럼 생성하기

> cars$model = rownames(cars)

> cars

model이라는 컬럼 생성하면서,

cars의 names라는 이름의 컬럼 자료를 model 컬럼에 저장함


14) 컬럼 지우기

> rownames(cars) = NULL

> cars

NULL은 비어있는 상태(0의 개념이 아님)

NOT NULL은 반드시 값이 있어야 한다는 것


15) 스페이스 앞까지만 단어열 출력하기

> cars$maker = word(cars$model, 1)


maker(제조사) 컬럼 새로 만드는데,

model의 앞단어 1개까지만 저장함(스페이스 전까지).

ex) Mazda RX4이면 Mazda만 저장


16) dplyr 패키지의 기본 함수

함수명 내용 유사함수

filter() 지정한 조건식에 맞는 데이터 추출                 subset()

select() 열의 추출 data[, c(“Year”, “Month”)]

mutate()          열 추가 transform()

arrange()     정렬 order(), sort()

summarise()     집계 aggregate()


17) 필터링 하여 원하는 컬럼만 보기

> cars.small.narrow = 

+ cars %>%

+ filter(cyl == 4) %>%

+ select(maker, model, mpg, cyl)

> cars.small.narrow

cyl이 4인것만 select해서 maker, model, mpg, cyl 컬럼만 보여줌


18) group_by

> makers = 

+ cars %>%

+ group_by(maker) %>%

+ summarise(maker.mpg = mean(mpg))

> head(makers)

# A tibble: 6 x 2

  maker    maker.mpg

  <chr>        <dbl>

1 AMC           15.2

2 Cadillac      10.4

3 Camaro        13.3

4 Chrysler      14.7

5 Datsun        22.8

6 Dodge         15.5


19) merge

> cars.maker = merge(cars, makers, by="maker")


20) 2차원 테이블

> table(cars$cyl)

> table(cars$gear, cars$cyl)


> cars$cyl

> cars$gear

> table(cars$gear)








<<<표 그리기>>>


1) hist

히스토그램 그리기(막대형 그래프)

> hist(cars$mpg)

=========================

zoom하면 크게 보기 가능

export하여 저장

=========================




2) plot

상관관계 분석

두 개의 값을 점으로 나타냄 (분산형 그래프)

엑셀에서는 scatter

> plot(cars$wt, cars$mpg)




3) qplot

> qplot(wt, mpg, data = cars,

+ shape = factor(cyl))







etc


NULL=값이 정의되지 않음



NA = (ex. 무응답)





무한대 infinite(불능)

>z<-10/0

>z

[1] inf



숫자가 아님(부정)

>w<-0/0

>w

[1] NaN





웹사이트의 데이터 파일 읽기

url<-"https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/datasets/Titanic.csv"

x<-read.csv(url)

x



+ Recent posts