5 장 데이터 조작

42
5 장 장장장 장장

Upload: jessica-owen

Post on 02-Jan-2016

45 views

Category:

Documents


7 download

DESCRIPTION

5 장 데이터 조작. 5_1. Iris 데이터. 데이터 러닝머신에 사용할 예제 붓꽃의 3 가지 종류에 대해 꽃바침과 꽃잎의 길이를 정리한 데이터 Species 는 붓꽃의 종류. Iris 와 macars. Iris 의 3 차원배열 형태. 5_2. 파일 입출력. X

TRANSCRIPT

Page 1: 5 장 데이터 조작

5 장 데이터 조작

Page 2: 5 장 데이터 조작

5_1. Iris 데이터• 데이터 러닝머신에 사용할 예제• 붓꽃의 3 가지 종류에 대해 꽃바침과 꽃잎의 길이를 정리한 데이터- Species 는 붓꽃의 종류

Page 3: 5 장 데이터 조작

Iris 와 macars

Iris 의 3 차원배열 형태

Page 4: 5 장 데이터 조작

5_2. 파일 입출력• X<-read.csv(“FileName.csv”) - csv 파일을 불러들여옴

- names(x)<-c(“column1”,”column2”..)- head(x)

Page 5: 5 장 데이터 조작

추가

Page 6: 5 장 데이터 조작

as.[class]

• as.character(table$column)- 문자형으로 변환

• as.complex(table$column)- 복합형 (nemeric 벡터와 혼합 )

• as.logical(table$column)- 논리적으로 TRUE 와 FALSE 구별

• as.integer(table$column)- 숫자형변환

• as.numeric(table$column)- 문자형을 숫자로 인식했을 때

Page 7: 5 장 데이터 조작
Page 8: 5 장 데이터 조작

* Factor 이 아닌 문자형으로 읽어들이기- N/A 로 인식하는 데이터가 있을 때 문자형으로 읽어들인다 .- 또한 인식하지 못하는 데이터를 na.strings=(“ 못읽는데이터” )

못읽는 데이터가 NA 로 변환

Page 9: 5 장 데이터 조작

5_3. save(), load()

Page 10: 5 장 데이터 조작

5_4. rbind(), cbind()

• 행렬에 추가할 때 사용하는 함수• Insert 문과 동일 • Rbind(“column1”,”column2”)..

Page 11: 5 장 데이터 조작

5_5 apply()

• 행 또는 열방향으로 특정함수를 적용하는데 사용 .

• Apply( 행렬 , 방향 , 함수 ) 형태로 사용

Ex) apply(d,1,sum) 형태-> d 의 자료를 1 또는 2 로 나타내어 방향으로 더한다 .

->1 은 행을 나타내고 2 는 열을 나타낸다 .

Page 12: 5 장 데이터 조작

단 , apply 함수나 colSums, rowSums 의 함수들은 매개변수의 조건이 같아야한다 .

colSums, rowSums, colMeans, rowMeans 의 의미

Page 13: 5 장 데이터 조작

5_5.2 plyr::adply()

• Apply() 는 데이터 프레임을 받아 데이터 프레임을 행 또는 열방향으로 처리하는데 사용가능하다 .

• 하지만 문자열 데이터와 섞어 사용할 경우 데이터를 모두 문자열로 변환시켜버리는 단점이 있다 .

• 이를 위해 plyr 이라는 패키지를 사용한다 .

Page 14: 5 장 데이터 조작
Page 15: 5 장 데이터 조작

조건을 입력하여 값을 압축하지만 , 뭔가 잘못됨 ..

Page 16: 5 장 데이터 조작

5_5.3lapply()

• Lapply(X, 함수 ) 의 형태로 호출하며 이 때 , ‘X’ 는 벡터 또는 리스트이며 , ‘ 함수’는 ‘ X’ 내 각 요소에 적용할 함수

리스트형태풀 때는>Unlist(result)

Page 17: 5 장 데이터 조작

1. Unlist 를 통해 리스트를 벡터로 전환2. Matrix 를 통해 벡터를 행렬로 전환3. As.data 를 통해 행렬을 데이터프레임으로 전환4. Names 를 사용해 리스트로부터 변수명을 얻어와 데이터 프레임의 각

열에 이름 부여

Page 18: 5 장 데이터 조작

• 또는 do.call() 을 사용가능• do.call( 사용할 함수 , 파라미터 )

Page 19: 5 장 데이터 조작

5_5.4 sapply()

• Lapply() 와 유사하지만 리스트대신 가능한 행렬 , 벡터 등으로 결과를 반환하는 함수이다 .

Sapply() 에 의해 반환된 결과는 위에 경우에는 벡터이다 . As.da-ta.frame() 를 사용해 데이터 프레임으로 변환할 수 있으며 , t(x) 를 사용해 벡터의 행과 열을 바궈주지 않으면 기대한 것과 다른 모양의 프레임을 얻게된다 .

Page 20: 5 장 데이터 조작

• Sapply() 에 의해 반환된 결과는 위에 경우에는 벡터이다 . As.da-ta.frame() 를 사용해 데이터 프레임으로 변환할 수 있으며 , t(x)를 사용해 벡터의 행과 열을 바궈주지 않으면 기대한 것과 다른 모양의 프레임을 얻게된다 .

Page 21: 5 장 데이터 조작

5_5.5 tapply()

• Tapply() 는 그룹별 처리를 위한 apply 함수로서 tapply( 데이터 ,색인 , 함수 ) 의 형태로 호출한다 .

• 여기서 색인은 데이터가 어느 그룹에 속하는지를 표현하기 위한 factor 형 데이터이다 .

Page 22: 5 장 데이터 조작

5_5.6 mapply

• Apply() 함수의 마지막 변형• Sapply() 와 유사하지만 다수의 인자를

함수에 넘긴다는 차이가 있다 .

Page 23: 5 장 데이터 조작

Sprintf in R

보통 C 나 C++Sprint( 버퍼 , 문자열 , 값 );

In RSprintf(“ 문자열 %s”, 버퍼 )또는 문장을 이을 때 Sprintf(“ 문자열 %s 문자열 %s, 버퍼 ,”문자열” )

Page 24: 5 장 데이터 조작

5_6. doBy 패키지• summaryBy(), orderBy, splitBy(), sampleBy() 와

같은 특정 값에 따라 데이터를 처리하는 함수들이 있다 .

• 다음은 base::summary() 함수이다 .• 자료가 인자로 주어지면 간략한 통계요약을 내놓고 ,

모델인자로 주어지면 모델에 대한 요약을 보여주는 방식으로 동작

Page 25: 5 장 데이터 조작

Iris 의 Sepal.Length의수치형 자료분포도

summaryBy(“formula”, table)Formula = 처리할 데이터를 일종의 수식으로 표현하는 형식여기선 Sepal.Width+Sepal.Length ~ Species 를 말한다 .

summaryBy()

Page 26: 5 장 데이터 조작

- orderBy( ~ 정렬할 조건 ( 오름차순 ) + ~ 에 대하여 , [ 테이블명 ])식으로 정렬

orderBy()

Page 27: 5 장 데이터 조작

splitBy()

레벨에 따라 분류가능한 splitBy()

splitBy(formula, data=parent.frame(), drop=TRUE)

Page 28: 5 장 데이터 조작

sampleBy()

• 주어진 데이터에서 임의로 샘플을 추측하는 목적으로 사용 . 중복을 허용하거나 허용하지 않고 샘플을 추출 가능하다 .

• 기본은 중복을 허용하지 않으며 , 중복을 허용하려면 replace=TRUE 로 설정하면된다 .

- 함수 조건식 :• sampleBy(formula, frac=0.1,

replace=FALSE, data = parent.frame(),systematic=FALSE)

Page 29: 5 장 데이터 조작

Sample()

Sample( 범위 , 추출값 )범위안에서 n 개 만큼의 추출값을 랜덤형식으로 추출Replace 는 중복허용 가능한지를 나타냄

Ex)replace=TRUE 는 중복허용 replace=FALSE 는 중복 불가

Page 30: 5 장 데이터 조작

- NROW() 는 주어진 데이터 프레임 또는 벡터의 행의 수 또는 길이를 반환하는함수이다 .

- sample() 는 데이터의 무작위 재배열보다는 주어진 데이터에서 일부를 사용하는 데이터 , 일부를 테스트데이터로 분리하는데 더 유용하게 쓰일 수 있다 .

Page 31: 5 장 데이터 조작

5_7 split(), subset()

• Split() 는 데이터를 분리하는데 사용된다 .• 형식은 split( 데이터 , 분리조건 )

Page 32: 5 장 데이터 조작

Subset()

• Split 와 유사하지만 전체를 부분으로 구분하는 대신 특정 부분만 취하는 용도로 사용된다 .

• Excel 과 비슷

Page 33: 5 장 데이터 조작

조건에 맞춰 다음의 내용을 뽑을 수 있다 .Subset(“ 테이블명” ,” 조건 1” & “ 조건 2”)

Page 34: 5 장 데이터 조작

5_8. Merge()

• 두 데이터 프레임을 공통된 값을 기준으로 묶는 함수 .

• RDB 에서 join 과 같은 역할을 한다 .

Page 35: 5 장 데이터 조작

Cbind() 로 하면 조건안에 있는 값들이 하나로 합쳐진다 .

만약 조건식이 한쪽은 3, 한쪽은 4 일 때모든 것을 출력하면 NA 로 받으며 , 모든 것으로 출력하지 않을 시 name 을 기준으로 공통된 부분만 출력한다 .RDB 의 Full Outer Join

Page 36: 5 장 데이터 조작

5_9. Sort(), order()

sort() 는 정렬을 뜻한다 .sort(“ 테이블” ) 의 값은 항상오름차순으로 테이블에 대해 정렬되며 , de-creasing 조건으로 변경할 수 있다 .

Order 는 인덱스와 같다즉 , 앞부분을 인덱스로 나타내어 표시하여 준다 .Order(-x) 는 역순으로 x 의 값에서 큰수부터 나열한 것이다 .

Page 37: 5 장 데이터 조작
Page 38: 5 장 데이터 조작

5_10. with(), within()

Page 39: 5 장 데이터 조작
Page 40: 5 장 데이터 조작
Page 41: 5 장 데이터 조작
Page 42: 5 장 데이터 조작