본문 바로가기
Data Science/R

R프로그래밍 : 데이터프레임(DataFrame) - 생성, 인덱싱, 슬라이싱, 추가, 삭제, 변경

by 엔딴 2021. 3. 10.
반응형

데이터프레임

원소 개수가 같은 열벡터를 원소로 갖는 2차원 객체

열벡터의 자료형은 서로 다를 수 있으며, 이 점이 행렬과 다르다.

열벡터의 원소 개수가 서로 다르면 데이터프레임을 생성할 수 없다.

 

 

데이터프레임을 인덱싱할 때, 행렬처럼 대괄호 안에 콤마를 추가한다.

콤마 앞에 행 인덱스, 콤마 뒤에 열 인덱스를 지정하는 숫자형 벡터를 입력한다.

콤마 앞에 생략하면 행 전체를 선택. 열도 마찬가지

데이터프레임에서 컬럼 하나만 선택하면 항상 벡터로 출력하지만, 행을 하나만 선택하면 항상 데이터프레임으로 출력. 행의 자료형은 다를 수 있기 때문.

 

데이터프레임은 리스트처럼 달러 기호를 사용하여 열벡터를 선택할 수 있다.

데이터프레임$컬럼명은 해당 컬럼을 본래 자료구조인 벡터로 출력

 


data.frame( ) : 데이터프레임 생성 함수

num <- seq(from=1, to==10, by=2)
cha <- letters[1:5]
df1 <- data.frame(num, cha)

 


데이터프레임 인덱싱 및 슬라이싱

1) 대괄호 안에 콤마를 이용하여 원하는 위치의 값 선택

df1[1, 1]

df1[1:3, 1:3]

 

2) 데이터프레임의 행 선택

df1[1, ] 

df1[1:2, ]

df1[c(1,3), ]

 

3) 데이터프레임의 열 선택

df1[ , 1]

df1[ , 1:2]

df1[ , 'num']

df1[ , c('num', 'cha')]

df1$num

df1$cha

 

4) 불리언 인덱싱

df1[df1$num >=3, ] #벡터 num의 원소가 3이상인 행만 출력

df1[df1$num >=3, 'cha']  #벡터 num의 원소가 3이상인 'cha'열만 출력

df1$cha[df1$num >= 3]  #위와 동일

df1$num[df1$cha %in% c('a', 'b')]  #cha의 원소가 'a','b'인 num의 원소 출력

 

참고) 홑대괄호 vs. 겹대괄호

홑대괄호 사용 : 해당 컬럼의 데이터를 데이터프레임 형태로 반환

 

겹대괄호 사용 : 해당 컬럼의 데이터를 벡터 형태로 반환

 

 

데이터프레임 원소의 추가

1) 새로운 컬럼명

df1$int <- 1:5

 

2) 컬럼 추가

cbin(df1, df2)

 

3) 행 추가

rbind(df1, df3)

 

 

데이터프레임 원소의 삭제

1) 인덱스 앞에 마이너스 추가

df1[-1, 1]

df1[-1,  ]

df1[ ,  -1]

 

2) 삭제할 컬럼명에 NULL 할당 -> 해당 열벡터 삭제

df1$num <- NULL

print(x=df1)

 

 

데이터프레임 원소의 변경

1) 모든 원소 변경 -> 변경할 컬럼명에 열벡터 할당 (원소 개수가 같아야함!)

df1$cha <- LETTERS[1:5]  

 

2) 일부만 변경 

df1$int[1] <- '1'

 

 

반응형