R에서 많은 데이터 관리하기.
5. 많은 데이터 관리하기.
1) 벡터로 데이터 관리
* R에서 벡터란?
: 여러 개의 동일한 형태의 데이터를 모아서 함께 저장되는 세트 (집합이라고도 한다.) -> c()함수를 사용한다.
- 모두 동일한 데이터형이 저장되어야 하며, 만일 다른 유형이 있을 경우 강제 형 변환이 일어나거나 에러가 발생한다.
(1) 특정 위치 값 제어하기.
* append 함수 : 벡터에 새로운 요소를 추가 (위에 방법 사용시에는 데이터가 replace 되지만, append는 그위치 다음에 추가가 된다.)
(2) 벡터로 연산하기
* union : 두 집합의 합집합
* setdiff(var1,var2) : 두 집합의 차집합 (var1에 있는데, var2에는 없는 요소)
* intersect : 두 집합의 교집합 (공통적으로 있는 요소)
(3) 벡터의 각 칼럼에 이름 지정 ★ :names()
- names(벡터명) <- '지정할 칼럼명'
* 벡터에 연속적인 데이터 할당 - seq(), rep()
(4) 벡터의 길이 찾기 : length() ★
- nrow() 함수 : 행렬의 경우 몇 행인지 구해주는 함수.
NROW()함수 : 배열의 건 수 출력하는 함수.
(5) 벡터에 특정 문자의 포함 여부 찾기★ : 찾을문자 %in% 벡터명
- 긴 벡터에서 특정 데이터의 존재 유무를 검증하는 방법으로 많이 사용된다.
2) 행렬로 데이터 관리하기- Matrix()함수 사용
(1) 기본문법
- c()함수를 이용한 배열은 한 행밖에 사용할 수 없다.
- Matrix는 벡터와 달리 여러 행과 컬럼을 가질 수 있지만 모든 칼럼의 행은 데이터형이 동일해야 한다.
(단 리스트를 사용해서 생성한 행렬은 다른 데이터 타입을 가질 수는 있지만 권장사항은 아니다.)
* 가로로 입력 : byrow=T
몇 행 만들지 : nrow
(2) Matrix의 데이터 조회하기 : matrix[행값, 열값]
(3) 새로운 행과 열 추가하기 : rbind(), cbind() 사용
* rbind() : 행(row)을 추가
* cbind() : 열(column)을 추가
* 칼럼이름 지정 : colnmaes()
3) list로 데이터 관리하기
: matrix(행렬)은 여러 건의 데이터가 모두 같은 형태여야 한다. 그러나 list는 다른 유형의 데이터를 저장할 수 있다.
: list는 (키, 값) 형태로 데이터를 저장하는 일종의 배열이다.
: list는 데이터가 한 건 밖에 안들어 간다.
(1) List 생성하고 조회.
* 특정 key만 조회 : 변수명$key
(2) List에 새로운 요소 추가/삭제하기
- list에 새로운 요소 추가 : 변수명$새로운key <- '값'
- 하나의 key에 두 개 이상의 값을 추가 : 변수명$key <- c('값1','값2')
- 특정 요소 삭제 : 변수명$key <- NULL
4) 데이터 프레임을 사용하여 데이터 관리하기
: DBMS에서의 칼럼이 R에서는 라벨이라고 부른다.
: 표라고 생각하면 쉽다.
(1) 벡터로부터 데이터 프레임 생성하기.
: 각 라벨별로 먼저 생성한 후, data.frame이라는 명령으로 모든 라벨을 합쳐서 데이터 프레임을 생성한다.
(2) 행렬로부터 데이터 프레임 생성하기.
: 행렬로부터 데이터프레임을 생성하면 다른데이터형이 있을 경우, 전부 같은 데이터형으로 변환이되므로, 같은데이터형일때만 행렬로 데이터프레임을 생성하는 것이 좋다.
- 데이터프레임을 생성한 후 라벨명 지정 : names(데이터프레임명) <- c('라벨1','라벨2',...)
(3) 데이터프레임에서 원하는 데이터만 조회하기 : 변수$라벨명
* 특정 행과 열을 출력 : c()함수 사용
* 특정 조건에 맞는 데이터만 골라 보고 싶은 경우 : subset()함수
(4) 데이터 프레임의 내용 확인 및 출력 순서 지정하기.
함 수 |
기 능 |
ncol(dataframe) |
data frame의 열의 개수 |
nrow(dataframe) |
data frame의 행의 개수 |
names(dataframe) colnames(dataframe) col.names(dataframe) |
data frame의 열 이름 출력 |
rownames(dataframe) row.names(dataframe) |
data frame의 행 이름 출력 |
dataframe[c(1,2,3,4,5),] |
12,3,4,5 행의 순서대로 출력 |
dataframe[c(1,2,3,4,5)] dataframe[,c(1,2,3,4,5)] |
1,2,3,4,5 열의 순서대로 출력 |