跳至主要内容

R 데이터 타입

R에서의 데이터 타입 기본형은 Vector이다. 자료형은 다음과 같다.
  • Vector
  • List
  • Matrix
  • Array
  • DataFrame


Vector


정의

다른 언어의 배열과 비슷하고, 한 가지의 스칼라 데이터타입의 데이터들을 저장할 수 있다.
      (ex, 숫자만 저장하는 배열/문자열만 저장하는 배열/ a <- 1/ a <- "hello")
슬라이스(Slice)를 제공한다. 
      Slice란? 배열의 일부를 잘라내고 이를 다시 배열로 다루는 개념

생성

c()함수 안에 원하는 인자들을 나열
> x <- c(1, 2, 3)
> x[1] 1 2 3
 다음과 x <- c(1, 2, 3)부분에 괄호로 코드를 묶으면 실행된 결과값이 출력된다.
       ※ 괄호로 코드를 묶으면 괄호안의 문장을 수행하고 그 결과 값을 화면에 출력
> (x <- c(1, 2, 3))
[1] 1 2 3

데이터 접근

인덱스로 데이터에 접근할 수 있고 인덱스는 0이 아닌 1부터 시작한다.
접근 문법

  • x[n]: vector x의 n번째 요소
  • x[-n]: vector x에서 n번째 요소를 제외한 나머지를 반환

> x <- c("a", "b", "c")
> x[-1]
[1] "b" "c"

  • x[idx_vector]: idx_vector에 지정된 요소를 얻어옴. idx_vector는 색인을 표현하는 숫자 vector이다.

> x <- c("a", "b", "c")
> x[c(1, 2)]
[1] "a" "b"

  • x[start:end]: start부터 end까지의 값을 반환, 반환 값은 start위치의 값과 end위치의 값을 모두 포함

> x <- c("a", "b", "c")
> x[1:3]
[1] "a" "b" "c"

연산

  • %n%연산자
           특정 값이 vector에 포함되어 있는 여부를 알려준다
> "a" %in% c("a", "b", "c")
[1] TRUE
> "f" %in% c("a", "b", "c")
[1] FALSE

List

서로 다른 데이터타입을 저장 할 수 있는 (키, 값) 형태의 연관 배열이다
list(key1=value1, key2=value2, )함수로 생성한다.
> (x <- list(name="dobby", height=100))
$ name
[1] "dobby"

$ height
[1] 100

데이터 접근

색인 또는 키를 사용해 접근할 수 있다.
접근문법
  • x$key : x에서 key에 해당하는 값
> x <- list(name="dobby", height=c(30, 50, 70))
> x$name
[1] "dobby"
  • x[n]: x에서 n번째 데이터의 sub list
> x[1]
$ name
[1] "dobby"
x[[n]]: x에서 n번째 저장된 값

Matrix

동일한 스칼라 데이터 타입의 2차원 데이터 구조이고, 생성방법은 다음과 같다.

matrix() : 행렬을 생성한다.
matrix( 
   data,          # vector 값 
   nrow,          # 행의 수 
   ncol,          # 열의 수 
   byrow=FALSE,   # TRUE로 설정하면 행우선, FALSE일 경우 열 우선으로 데이터를 채운다. 
   dimnames=          # 행렬의 각 차원에 부여할 이름 
)

> matrix(1:9, nrow=3, dimnames=list(c("r1", "r2", "r3"), c("c1", "c2", "c3")))
   c1 c2 c3
r1  1  4  7
r2  2  5  8
r3  3  6  9

데이터 접근

색인이나 행과 열의 이름을 통해 접근
> x[1:2, ]
    [,1] [,2] [,3]
[1,]   1    4    7
[2,]   2    5    8
> x["r1", ]
c1 c2 c3
 1  4  7

행렬연산

dim(x) : x의 차원수를 반환
> x <- matrix(c(1:6), ncol=3)
> dim(x)
[1] 2 3

> dim(x) <- c(3, 2)
> x
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

Array

동일한 스칼라 데이터 타입의 다차원 데이터 구조이고 다음과 같이 생성한다.
array() 
array(
   data=                         # 데이터를 저장한 벡터
   dim=length(data),     # 배열의 차원. 이 값을 지정하지 않으면 1차원 배열이 생성된다.
   dimnames=               # 차원의 이름
)

> array(1:12, dim=c(3, 4))
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

데이터 접근

배열변수[행 인덱스, 열 인덱스, 차원인덱스]로 접근

Data Frame

다양한 데이터 타입으로 구성된 2차원 데이터 구조이고 다음과 같이 생성한다.
data.frame : 데이터 프레임을 생성한다.
data.frame(
   key=value,
   stringsAsFactors=default.stringsAsFactors()
)
stringsAsFactors: 주어진 문자열을 팩터 또는 문자열로 저장할 것인지를 지정하는 인자.
기본값은 TRUE이고 문자열은 팩터로 저장된다.

str()함수로 내부 구조를 알아본다.

데이터 접근

인덱스 또는 키로 접근가능하다.
  • d$colname: 컬럼 이름이 colname인 데이터에 접근
  • d[m, n, drop = TRUE]: m행 n컬럼에 저장된 데이터(m/n은 인덱스 혹은 컬럼 이름을 지정)
    • d[,n]과 같이 특정 컬럼값만 가져올 시 해당 컬럼의 데이터 타입으로 변환되는데 drop=False를 지정하면 데이터 프레임을 반환

유틸리티 함수

데이터를 손쉽게 살펴보기 위한 함수들은 다음과 같다.
  • head(x, n): x의 처음으로 부터 n번째 데이터를 반환
  • tail(x, n): x의 뒷부분을 n만큼 반환 

타입 판별

데이터 타입을 판별하는 함수
함수
의미
class(x)
데이터 타입을 반환
str(x)
객체 x의 내부 구조
is.factor(x)
주어진 객체 x가 팩터인가
is.numeric(x)
주어진 객체 x가 숫자를 저장한 벡터인가
is.character(x)
주어진 객체 x가 문자열을 저장한 벡터인가
is.matrix(x)
주어진 객체 x가 행렬인가
is.array(x)
주어진 객체 x가 배열인가
is.data.frame(x)
주어진 객체 x가 데이터 프레임인가

타입 변환

as.typename()함수를 사용하여 데이터 타입을 강제 벼환 할 수 있다.
함수
의미
as.factor(x)
주어진 객체 x를 팩터로 변환
as.numeric(x)
주어진 객체 x를 숫자를 저장한 벡터로 변환
as.character(x)
주어진 객체 x를 문자열을 저장한 벡터로 변환
as.matrix(x)
주어진 객체 x를 행렬로 변환
as.array(x)
주어진 객체 x를 배열로 변환
as.data.frame(x)
주어진 객체 x를 데이터 프레임으로 변환

评论

此博客中的热门博文

기초 통계 함수

데이터의 기본적인 특징을 알려주는 기초 통계량  평균 분산 표준 편자 다섯 수 치 요약 최빈값 평균 (Mean) 평균을 계산한다. mean  : 평균을 계산한다. mean( x, trim=0, na.rm=FALSE, ...) # trim은 절사평균 을 사용할 때 (0, 0.5)로 지정 # na.rm는 평균 계산전 NA를 제거할지 여부 절사평균 (Trimmed Mean)이란?    데이터를 크기 순서로 나열한 뒤 값이 작은 쪽과 큰 쪽에서 얼마만큼의 데이터를 제거한 다음 평균을 계산 분산 (var) var  : 분산을 계산한다. var(x, na.rm=FALSE) > var(1:5) [1] 2.5 > var(mpg) [1] 36.3241028225806 표준 편차 (sd) sd:  표준 편차를 계산한다. sd(x, na.rm=FALSE) 다섯 수치 요약 최소값, 제1사분위수, 중앙값, 제3분위수, 최댓값으로 요약 fivenum  : 다섯 수치 요약을 구한다. fivenum(x, na.rm=TRUE) summary는 fivenum과 유사하지만 추가로 평균까지 계산한다. 최빈값(mode) 데이터에서 가장 자주 나타난 값을 말한다. table()을 사용해 각 데이터가 출현한 횟수를 센 분할표(Contigency Table)를 만든다. table  : 분할표를 작성한다. table( ... # 팩터로 해석할 수 있는 하나 이상의 객체 ) 반환 값은 table 클래스의 인스턴스이고 인자에 지정한 팩터들의 빈도수를 구한 결과를 저장 분할표(Contigency Table)란? 값의 빈도를 변수들의 값에 따라 나누어 그린 표

R 함수

cut() cut  : 숫자들을 구간에 따라 분류해 factor로 변환한다. cut(x, breaks, right = F) # x는 숫자 vector # breaks는 구간을 저장한 vector 또는 구간의 수 # right는 breaks로 나뉘어진 구간에서 오른쪽 끝 값 사용에 대한 논리값 (T/F)으로, right = F의 경우 [a, b)로 됨 cut()에서 구간들은 (start, end] 형태로 정의되고, 0 < x <= end를 의미한다. 1~10사이의 수가 breaks에서 나눈 (0,5]와 (5, 10]구간에서 어느 곳에 속하는지 나타내는 factor를 반환한다.

Python - Numpy

random module np.random. normal (loc = 0.0, scale = 1.0, size = None) 정규 분포 확률 밀도에서 표본 추출함. 생성된 난수는 정규 분포의 형상을 가짐 Parameters: loc :  정규분포 평균 ( 중심점 ) scale :  표준편차 size : Output shape.  개수 혹은  ( 행 ,  열 ) Returns: out :  설정된  parameters 에 따른   ndarray or scalar  값을 반환 ex) np.random.normal(0, 1, (2, 3)) 평균이 0 이고 표준편차가 1 인 정규분포를 띄는 2x3 의 행렬 값을 반환 받음