728x90
반응형
R에서 matrix
와 data.frame
은 모두 2차원 데이터 구조를 다루기 위한 중요한 객체 유형이지만, 그 기능과 사용 용도가 다릅니다. 이 두 구조는 몇 가지 중요한 차이점을 가지고 있습니다.
1. 데이터 타입
Matrix: 행렬(matrix)은 단일 데이터 타입을 가지는 2차원 배열입니다. 행렬의 모든 요소는 동일한 데이터 타입(예: 모두 숫자, 모두 문자 등)을 가져야 합니다.
- 예시:
출력:mat <- matrix(1:6, nrow = 2, ncol = 3) print(mat)
이 행렬은 숫자로만 구성되어 있습니다.[,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6
- 예시:
Data Frame: 데이터 프레임(data.frame)은 여러 데이터 타입을 가질 수 있는 2차원 구조입니다. 각 열(column)은 서로 다른 데이터 타입(예: 첫 번째 열은 숫자, 두 번째 열은 문자 등)을 가질 수 있습니다.
- 예시:
출력:df <- data.frame( Name = c("Alice", "Bob", "Charlie"), Age = c(25, 30, 35), Gender = c("F", "M", "M") ) print(df)
이 데이터 프레임은 문자형, 숫자형, 문자형 열을 포함하고 있습니다.Name Age Gender 1 Alice 25 F 2 Bob 30 M 3 Charlie 35 M
- 예시:
2. 사용 용도
- Matrix: 주로 수학적 계산(예: 행렬 연산, 선형 대수 등)이나 단일 유형의 대규모 데이터(예: 이미지 데이터 처리 등)를 다룰 때 사용됩니다.
- Data Frame: 일반적으로 통계 분석이나 데이터 분석 작업에서 널리 사용됩니다. 다양한 데이터 타입을 한 구조 내에서 처리할 수 있기 때문에 실제 데이터셋(예: CSV 파일, 데이터베이스 테이블)을 다룰 때 많이 사용됩니다.
3. 열(column)과 행(row) 이름
Matrix: 행렬은 선택적으로 행과 열에 이름을 붙일 수 있지만, 이는 필수가 아닙니다.
- 예시:
출력:mat <- matrix(1:6, nrow = 2, ncol = 3, dimnames = list(c("row1", "row2"), c("col1", "col2", "col3"))) print(mat)
col1 col2 col3 row1 1 3 5 row2 2 4 6
- 예시:
Data Frame: 데이터 프레임의 열은 항상 이름을 가지며, 각 열 이름은 데이터를 명확하게 설명하기 위해 사용됩니다.
4. 확장성
- Matrix: 행렬은 기본적으로 고정된 크기의 동일 타입 데이터를 다루는 데 적합합니다. 다양한 데이터 타입을 추가하거나 수정하는 것이 어렵습니다.
- Data Frame: 데이터 프레임은 매우 유연하며, 새로운 열을 추가하거나 기존 열을 수정하는 것이 간편합니다. 다양한 데이터 타입을 쉽게 관리할 수 있습니다.
5. 서로 간의 변환
Matrix에서 Data Frame으로 변환:
as.data.frame()
함수를 사용하여 행렬을 데이터 프레임으로 변환할 수 있습니다.- 예시:
df_from_mat <- as.data.frame(mat) print(df_from_mat)
- 예시:
Data Frame에서 Matrix로 변환:
as.matrix()
함수를 사용하여 데이터 프레임을 행렬로 변환할 수 있습니다. 이 경우, 데이터 프레임의 모든 열이 동일한 데이터 타입으로 강제 변환됩니다.- 예시:
mat_from_df <- as.matrix(df) print(mat_from_df)
- 예시:
요약
- Matrix: 동일한 데이터 타입의 2차원 배열로, 수학적 계산에 적합.
- Data Frame: 다양한 데이터 타입을 허용하는 2차원 구조로, 데이터 분석 및 통계 작업에 적합.
이 두 구조는 각자의 장점과 용도가 있으므로, 분석하려는 데이터의 특성에 따라 적절한 구조를 선택하는 것이 중요합니다.
728x90
반응형
'programming language > R' 카테고리의 다른 글
[R] Ubuntu에서 install.packages 관련 Error (ggplots 설치 안됨) (1) | 2024.04.05 |
---|