매일 매일 미라클 코딩

데이터 분석툴 R사용하기 (2) - DataFrame 과 함수 본문

데이터베이스/R

데이터 분석툴 R사용하기 (2) - DataFrame 과 함수

뚜벅-뚜벅 2021. 9. 17. 00:45

데이터프레임(Data frame) : 같은길이를 갖는 벡터들의 리스트

- 2차원 자료구조

- List와 matrix의 특성을 보유

- 가장 일반적으로 사용되는 자료구조

 

✔ 데이터 프레임 생성

data.frame(a,b,c) 함수 : 

char1<- rep(LETTERS[1:3], c(2,2,1))         #rep는 반복함수. LETTERS 는 A-Z 가 들어있는 벡터 
num1 <- rep(1:3 , c(2,2,1))                #1 ~3까지의 수를 각각 두번 두번 한번씩 반복
test1 <- data.frame(char1, num1)          #데이터 프레임 생성

 data.frame()의 각 변수가 컬럼명이 되고 인자들은 열 기준으로 합쳐져 데이터 프레임을 생성한다.

 

데이터프레임 합치기

cbind - 열 기준으로 데이터 합치기

rbind - 행 기준으로 데이터 합치기

merge - 데이터 병합 (inner join)

 

데이터프레임 요소 생성 및 호출

names() = colnames(), rownames()  #행과 열 이름

length() = ncol(), nrow()                #행과 열 갯수



Subsetting 일부 컬럼 추출

df <- data.frame( x=1:3, y=3:1, z= letters[1:3])

>df > df[c("x", "z")] > df[c(1,3) , ] > df[ , c("x","z")] df[df$x ==2, ]
  x y z
1 1 3 a
2 2 2 b
3 3 1 c
   x z
1 1 a
2 2 b
3 3 c
  x y z
1 1 3 a
3 3 1 c
 x z
1 1 a
2 2 b
3 3 c
  x y z
2 2 2 b

 

subset() : 특정조건을 만족하는 observation 선택

A <- subset(df, z=="b")

B <- subset(df, z=="a")   #각 조건을 만족하는 그룹만 분리

 

apply 함수: 각 원소에 대해서 함수를 적용하는 Mapping 함수

- apply( 데이터 , 기준(1:row-wise, 2:column-wise), 적용할 함수)

> M<- matrix(seq(1:16),4,4)
> M
     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16
> apply(M,1,min)  #1 : 모든 행에 적용
[1] 1 2 3 4
> apply(M,2,max)  #2 : 모든 열에 적용
[1]  4  8 12 16

 

- lapply(list, function) : 리스트 각 원소에 함수 적용

- sapply(list, function) : 리스트의 각 컴포넌트에 함수를 적용하고 Vector로 반환

- mapply(function, data1, data2) : 같은 위치의 값들을 대상으로 함수 적용

- rapply(list,  function): list 의 컴포넌트가 값을 가질때까지 recursive하게 찾아서 함수적용 -> Vector 반환

- tapply(vector, factor, function): 벡터의 subset에 함수를 적용