데이터프레임
원소 개수가 같은 열벡터를 원소로 갖는 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'
'Data Science > R' 카테고리의 다른 글
R 프로그래밍 : 리스트(list) - 생성, 인덱싱, 추가, 삭제, 변경 (0) | 2021.03.10 |
---|---|
R프로그래밍 : 변수(Variable), 객체(Object) (0) | 2021.03.10 |
R프로그래밍 : 사용자 정의 함수 (0) | 2021.03.10 |
R프로그래밍 : 행렬(matrix) (0) | 2021.03.09 |
R프로그래밍 : 자료구조 (data structure) (0) | 2021.03.09 |