R의 데이터 자료형
기본 자료형 : 정수, 문자열, 논리형
값의 초기화는 변수 <- 데이터 값(또는 변수 = 변수 값)
벡터Vector
: 동일한 데이터 타입의 요소로 구성된 1차원 구조
#벡터 : 동일한 데이터 타입으로만 요소가 지정된 1차원 구조 v_a <- c(1,2,3,4,5) v_b <- 1:4 #1,2,3,4 v_c <- c(TRUE, FALSE, TRUE) v_d <- c("a","b","c")
사용 함수
※ 기본적인 값의 참조, 접근은 대괄호 사용(1부터 시작, 0의 경우 요소의 유형 반환)
-length() : vector 의 길이
-sum() : 요소 전체 합
-mean() : 요소 전체 평균
-sum() : 요소 전체 합
-mean() : 요소 전체 평균
length(vector_a)#벡터 길이 sum(vector_b)#전체 합계 sum(vector_c) sum(vector_d)#sum 은 숫자, 논리형(1:TRUE,0:FALSE)만 적용 가능 mean(vector_a)#평균 vector_d[0]#데이터의 유형 포함 vector_d[1]#1부터 접근
행렬matrix
: 동일한 데이터 타입의 요소로 구성된 2차원 구조
#행렬:동일 데이터 타입 2차원 구성 #byrow : TRUE 인 경우 행 방향으로 진행 #FALSE 인 경우 열 방향(default) m <- matrix(1:100, nrow = 20, ncol = 5, byrow = TRUE)
byrow 가 FALSE 인 경우(Default) 1열부터 각 행을 순차적으로 요소를 구성
byrow 가 TRUE 인 경우 1행부터 각 열을 순차적으로 요소를 구성
#data의 개수가 지정 행,열에 비해 적은 경우, 복제 규칙에 따라 원소를 복사하여 추가 m_test <- matrix(c(1:10), nrow=20, ncol=50)byrow 에 따라 복제 규칙을 적용된다(아래의 그림의 경우 ROW(byrow = FALSE) 적용
![]() |
| - 1~10 이 열 단위로 반복됨 |
사용 함수
- dim() : 행 열 순서로 값을 반환
- rowSums() : 행별 합을 벡터 형태로 반환
- colSums() : 열별 합을 벡터 형태로 반환
dim(m)#행 열 반환 m[3,2]#행,열 접근 rowSums(m) # 행별 합 colSums(m) # 열별 합
행, 열 추가
※ 값을 추가하는 경우, 각 행, 열의 수가 맞아야 함
cbind() : 열 추가 - 두 데이터의 열의 개수가 동일해야 함
rbind() : 행 추가 - 두 데이터의 행의 개수가 동일해야 함
※다수의 행, 열을 추가하는 경우, 별도의 행렬을 생성(2열, 2행 이상의 행렬) 후 c/rbind를 사용하여 추가
#추가 시 행, 열의 수가 같아야 함함 cbind(m, c(1:20)) # 열 추가 rbind(m, c(1:5)) # 행 추가 #다수의 행, 열 추가 mr_new = matrix(1:10, nrow=2) rbind(m, mr_new) mc_new = matrix(1:20, ncol = 1) cbind(m, mc_new)
요인factor
: 범주형 데이터 구성
levels : factor 실제 저장 데이터 값(자동 생성됨)
labels : 표기 시 표기되는 값(유저 설정 출력명)
ordered : factor 에 순서 값 부여(비교 연산 가능)
#levels : 요인이 가질 수 있는 값 #labels : 요인의 표기 값 #ordered : 순서에 대한 의미를 부여-비교연산이 가능, levels 에 따라 순서 부여됨 f <- factor(c("Male", "Female", "Male", "Female"),levels=c("Male","Female"), labels = c('f','m'), ordered = TRUE)
사용 함수 및 참조/접근
sort() : 내부 요소 정렬, factor의 levels 에 따라 달라짐
levels() : 요인이 갖는 값의 종류 반환
table() : 값을 테이블 화 하여 반환
sort(f, decreasing = TRUE) # 정렬 decreasing : 내림차순 여부 levels(f)#요인의 값 종류 반환 table(f)#범주에 따른 개수를 테이블 화 하여 반환(lable 사용)
배열array
: 3차원 단일 데이터 구조
dim : 각 행,열,층으로 구성
데이터의 배치 및 복사 규칙은 열 방향으로 고정된다.
#배열array 3차원 단일 데이터 구조 #dim : 행,열,층 #기본적으로 데이터의 방향은 열 방향 고정 a <- array(c(1:100), dim = c(3,3,100))
※ dim = c(3, 4, 5) 의 경우
사용 함수 및 참조/접근
- 기본적인 접근/참조는 대괄호(행,열,층)를 사용
- dim() : 전체 행,열,층 반환
구조 변경
dim(배열 데이터) <- c(i, j, k) (각각 행, 열, 층)
※기존의 행,열,층에 대한 전체 요소의 개수와 변경될 구조의 원소 개수가 동일하여야 함
※값이 다른 경우 오류 발생
aperm() : 데이터 구조를 행,열,층에 따라 변경, 행,열,층에 대한 전체 요소의 개수가 기존과 다르더라도 오류가 발생하지 않음
a[3,2,99] # 접근 방법 #행,열, 층 순서 변경 dim(a) <- c(3,100,3) #값 전체가 다른 경우 오류가 발생 s <- aperm(a, dim = c(3,100,3)) #전체 개수가 다르거라도 오류 없음, 오류 발생시 구조 유지
데이터프레임dataframe
: 다양한 데이터 타입을 포함 할 수 있는 2차원 테이블 구조
왼쪽의 값은 열의 이름, 오른쪽은 해당 열에 대한 행의 값으로 지정됨
#데이터 프레임dataframe : 다양한 데이터 타입을 포함 할 수 있는 2차원 테이블 구조 df <- data.frame(Name=c("Alice", "Bob"), Age=c(25, 30), Score=c(90, 85))
사용 함수 및 참조/접근
데이터프레임$열 이름 : 열 접근
또는 대괄호([, ])를 이용하여 접근
dim() : 행, 열 수를 각각 반환
order() : 해당 열에 대해 정렬(행의 index를 반환)
→ 대괄호, 행 에 대해 적용하여 전체 정렬
df$Name #열 접근 df[1,] # 행 접근 df[df$Age>25,] # 조건부 참조 df[1,2:3] # 벡터를 이용한 범위형 참조 dim(df)#행, 열 반환 df[order(df$Age, decreasing = TRUE),] #정렬, decreasing : 내림차순 여부저
정렬하는 경우, levels, ordered를 응용하여 정렬
df <- data.frame(Name = c("Alice", "Bob", "Charlie", "David"), Satisfaction = c("Low", "Medium", "High", "Medium")) #ordered : 해당 열, levels를 기준으로 정렬, index 값을 반환 df$Satisfaction <- ordered(df$Satisfaction, levels=c("Low", "Medium", "High")) #ordered 를 적용한 열을 기준으로 정렬 df[order(df$Satisfaction, decreasing = TRUE),]
리스트list
: 다양한 자료형, 구조를 포함하는 자료 구조
#※데이터 프레임, 벡터 등 포함 가능
#리스트list : 다양한 자료형, 구조를 포함할 수 있음 #※데이터 프레임, 벡터 등 포함 가능 list1 <- list(name="Alice", age=25, scores=c(90, 85, 88))
참조/접근
대괄호를 이용하여 참조/접근하나, 대괄호의 중첩 개수에 따라 데이터 형태가 달라진다.
class(list1[1][1]) #해당 열 참조, 리스트 형으로 해당 위치의 데이터를 가져옴 class(list1[[1]][1]) # 원본 데이터의 형태로 가져옴
대괄호가 단일 개수인 경우 list 형으로 반환
대괄호가 중첩 형태인 경우 저장된 데이터 형으로 반환(위 코드는 "character" 반환)




댓글
댓글 쓰기