5 장 데이터 조작
DESCRIPTION
5 장 데이터 조작. 5_1. Iris 데이터. 데이터 러닝머신에 사용할 예제 붓꽃의 3 가지 종류에 대해 꽃바침과 꽃잎의 길이를 정리한 데이터 Species 는 붓꽃의 종류. Iris 와 macars. Iris 의 3 차원배열 형태. 5_2. 파일 입출력. XTRANSCRIPT
5 장 데이터 조작
5_1. Iris 데이터• 데이터 러닝머신에 사용할 예제• 붓꽃의 3 가지 종류에 대해 꽃바침과 꽃잎의 길이를 정리한 데이터- Species 는 붓꽃의 종류
Iris 와 macars
Iris 의 3 차원배열 형태
5_2. 파일 입출력• X<-read.csv(“FileName.csv”) - csv 파일을 불러들여옴
- names(x)<-c(“column1”,”column2”..)- head(x)
추가
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)- 문자형을 숫자로 인식했을 때
* Factor 이 아닌 문자형으로 읽어들이기- N/A 로 인식하는 데이터가 있을 때 문자형으로 읽어들인다 .- 또한 인식하지 못하는 데이터를 na.strings=(“ 못읽는데이터” )
못읽는 데이터가 NA 로 변환
5_3. save(), load()
5_4. rbind(), cbind()
• 행렬에 추가할 때 사용하는 함수• Insert 문과 동일 • Rbind(“column1”,”column2”)..
5_5 apply()
• 행 또는 열방향으로 특정함수를 적용하는데 사용 .
• Apply( 행렬 , 방향 , 함수 ) 형태로 사용
Ex) apply(d,1,sum) 형태-> d 의 자료를 1 또는 2 로 나타내어 방향으로 더한다 .
->1 은 행을 나타내고 2 는 열을 나타낸다 .
단 , apply 함수나 colSums, rowSums 의 함수들은 매개변수의 조건이 같아야한다 .
colSums, rowSums, colMeans, rowMeans 의 의미
5_5.2 plyr::adply()
• Apply() 는 데이터 프레임을 받아 데이터 프레임을 행 또는 열방향으로 처리하는데 사용가능하다 .
• 하지만 문자열 데이터와 섞어 사용할 경우 데이터를 모두 문자열로 변환시켜버리는 단점이 있다 .
• 이를 위해 plyr 이라는 패키지를 사용한다 .
조건을 입력하여 값을 압축하지만 , 뭔가 잘못됨 ..
5_5.3lapply()
• Lapply(X, 함수 ) 의 형태로 호출하며 이 때 , ‘X’ 는 벡터 또는 리스트이며 , ‘ 함수’는 ‘ X’ 내 각 요소에 적용할 함수
리스트형태풀 때는>Unlist(result)
1. Unlist 를 통해 리스트를 벡터로 전환2. Matrix 를 통해 벡터를 행렬로 전환3. As.data 를 통해 행렬을 데이터프레임으로 전환4. Names 를 사용해 리스트로부터 변수명을 얻어와 데이터 프레임의 각
열에 이름 부여
• 또는 do.call() 을 사용가능• do.call( 사용할 함수 , 파라미터 )
5_5.4 sapply()
• Lapply() 와 유사하지만 리스트대신 가능한 행렬 , 벡터 등으로 결과를 반환하는 함수이다 .
Sapply() 에 의해 반환된 결과는 위에 경우에는 벡터이다 . As.da-ta.frame() 를 사용해 데이터 프레임으로 변환할 수 있으며 , t(x) 를 사용해 벡터의 행과 열을 바궈주지 않으면 기대한 것과 다른 모양의 프레임을 얻게된다 .
• Sapply() 에 의해 반환된 결과는 위에 경우에는 벡터이다 . As.da-ta.frame() 를 사용해 데이터 프레임으로 변환할 수 있으며 , t(x)를 사용해 벡터의 행과 열을 바궈주지 않으면 기대한 것과 다른 모양의 프레임을 얻게된다 .
5_5.5 tapply()
• Tapply() 는 그룹별 처리를 위한 apply 함수로서 tapply( 데이터 ,색인 , 함수 ) 의 형태로 호출한다 .
• 여기서 색인은 데이터가 어느 그룹에 속하는지를 표현하기 위한 factor 형 데이터이다 .
5_5.6 mapply
• Apply() 함수의 마지막 변형• Sapply() 와 유사하지만 다수의 인자를
함수에 넘긴다는 차이가 있다 .
Sprintf in R
보통 C 나 C++Sprint( 버퍼 , 문자열 , 값 );
In RSprintf(“ 문자열 %s”, 버퍼 )또는 문장을 이을 때 Sprintf(“ 문자열 %s 문자열 %s, 버퍼 ,”문자열” )
5_6. doBy 패키지• summaryBy(), orderBy, splitBy(), sampleBy() 와
같은 특정 값에 따라 데이터를 처리하는 함수들이 있다 .
• 다음은 base::summary() 함수이다 .• 자료가 인자로 주어지면 간략한 통계요약을 내놓고 ,
모델인자로 주어지면 모델에 대한 요약을 보여주는 방식으로 동작
Iris 의 Sepal.Length의수치형 자료분포도
summaryBy(“formula”, table)Formula = 처리할 데이터를 일종의 수식으로 표현하는 형식여기선 Sepal.Width+Sepal.Length ~ Species 를 말한다 .
summaryBy()
- orderBy( ~ 정렬할 조건 ( 오름차순 ) + ~ 에 대하여 , [ 테이블명 ])식으로 정렬
orderBy()
splitBy()
레벨에 따라 분류가능한 splitBy()
splitBy(formula, data=parent.frame(), drop=TRUE)
sampleBy()
• 주어진 데이터에서 임의로 샘플을 추측하는 목적으로 사용 . 중복을 허용하거나 허용하지 않고 샘플을 추출 가능하다 .
• 기본은 중복을 허용하지 않으며 , 중복을 허용하려면 replace=TRUE 로 설정하면된다 .
- 함수 조건식 :• sampleBy(formula, frac=0.1,
replace=FALSE, data = parent.frame(),systematic=FALSE)
Sample()
Sample( 범위 , 추출값 )범위안에서 n 개 만큼의 추출값을 랜덤형식으로 추출Replace 는 중복허용 가능한지를 나타냄
Ex)replace=TRUE 는 중복허용 replace=FALSE 는 중복 불가
- NROW() 는 주어진 데이터 프레임 또는 벡터의 행의 수 또는 길이를 반환하는함수이다 .
- sample() 는 데이터의 무작위 재배열보다는 주어진 데이터에서 일부를 사용하는 데이터 , 일부를 테스트데이터로 분리하는데 더 유용하게 쓰일 수 있다 .
5_7 split(), subset()
• Split() 는 데이터를 분리하는데 사용된다 .• 형식은 split( 데이터 , 분리조건 )
Subset()
• Split 와 유사하지만 전체를 부분으로 구분하는 대신 특정 부분만 취하는 용도로 사용된다 .
• Excel 과 비슷
조건에 맞춰 다음의 내용을 뽑을 수 있다 .Subset(“ 테이블명” ,” 조건 1” & “ 조건 2”)
5_8. Merge()
• 두 데이터 프레임을 공통된 값을 기준으로 묶는 함수 .
• RDB 에서 join 과 같은 역할을 한다 .
Cbind() 로 하면 조건안에 있는 값들이 하나로 합쳐진다 .
만약 조건식이 한쪽은 3, 한쪽은 4 일 때모든 것을 출력하면 NA 로 받으며 , 모든 것으로 출력하지 않을 시 name 을 기준으로 공통된 부분만 출력한다 .RDB 의 Full Outer Join
5_9. Sort(), order()
sort() 는 정렬을 뜻한다 .sort(“ 테이블” ) 의 값은 항상오름차순으로 테이블에 대해 정렬되며 , de-creasing 조건으로 변경할 수 있다 .
Order 는 인덱스와 같다즉 , 앞부분을 인덱스로 나타내어 표시하여 준다 .Order(-x) 는 역순으로 x 의 값에서 큰수부터 나열한 것이다 .
5_10. with(), within()