420 likes | 582 Views
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].
E N D
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_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) 리스트형태
Unlist를 통해 리스트를 벡터로 전환 Matrix를 통해 벡터를 행렬로 전환 As.data를 통해 행렬을 데이터프레임으로 전환 Names를 사용해 리스트로부터 변수명을 얻어와 데이터 프레임의 각 열에 이름 부여
또는 do.call()을 사용가능 • do.call(사용할 함수, 파라미터)
5_5.4 sapply() • Lapply()와 유사하지만 리스트대신 가능한 행렬, 벡터 등으로 결과를 반환하는 함수이다. Sapply()에 의해 반환된 결과는 위에 경우에는 벡터이다. As.data.frame()를 사용해 데이터 프레임으로 변환할 수 있으며, t(x)를 사용해 벡터의 행과 열을 바궈주지 않으면 기대한 것과 다른 모양의 프레임을 얻게된다.
Sapply()에 의해 반환된 결과는 위에 경우에는 벡터이다. As.data.frame()를 사용해 데이터 프레임으로 변환할 수 있으며, t(x)를 사용해 벡터의 행과 열을 바궈주지 않으면 기대한 것과 다른 모양의 프레임을 얻게된다.
5_5.5 tapply() • Tapply()는 그룹별 처리를 위한 apply함수로서 tapply(데이터,색인,함수)의 형태로 호출한다. • 여기서 색인은 데이터가 어느 그룹에 속하는지를 표현하기 위한 factor형 데이터이다.
5_5.6 mapply • Apply()함수의 마지막 변형 • Sapply()와 유사하지만 다수의 인자를 함수에 넘긴다는 차이가 있다.
Sprintf in R 보통 C나 C++ Sprint(버퍼,문자열,값); In R Sprintf(“문자열 %s”,버퍼) 또는 문장을 이을 때 Sprintf(“문자열%s 문자열%s,버퍼,”문자열”)
5_6. doBy패키지 • summaryBy(), orderBy, splitBy(), sampleBy()와 같은 특정 값에 따라 데이터를 처리하는 함수들이 있다. • 다음은 base::summary()함수이다. • 자료가 인자로 주어지면 간략한 통계요약을 내놓고, 모델인자로 주어지면 모델에 대한 요약을 보여주는 방식으로 동작
summaryBy() Iris의 Sepal.Length의 수치형 자료분포도 summaryBy(“formula”, table) Formula = 처리할 데이터를 일종의 수식으로 표현하는 형식 여기선 Sepal.Width+Sepal.Length ~ Species를 말한다.
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(“테이블”)의 값은 항상 오름차순으로 테이블에 대해 정렬되며, decreasing 조건으로 변경할 수 있다. Order는 인덱스와 같다 즉, 앞부분을 인덱스로 나타내어 표시하여 준다. Order(-x)는 역순으로 x의 값에서 큰수부터 나열한 것이다.