10 min to read
R-Studio 데이터 프레임(DataFrame) 과 Factor
R-Studio의 꽃 데이터 프레임(DataFrame)
R-Studio 기본 자료형 Vector
Matrix -> DataFrame 으로 변환 가능하다.
DataFrame 에서 행렬 반전은 Matrix 에서 t(Matrix변수) 를 통해 미리 하고오는게 편하다.
사용된 함수
이름 | 함수이름 | 사용법 |
---|---|---|
Getwd | getwd() | getwd() |
Setwd | setwd() | setwd(‘작업 경로’) |
print() | print(변수) | |
View | View() | View(데이터 프레임 변수) |
Names ColNames |
names() colnames() |
names(프레임 변수)) colnames(프레임 변수, do.NULL = T) |
Row.Names | row.names() | row.names(프레임 변수) |
함수 예제
# 아래 주석은 콘솔 값 입니다.
# csv 로드를 위해 워크스페이스 바꿈
getwd()
setwd('D:/Rwork/bigdata')
# header = 컬럼명 대로 정렬해줌.
abc.csv = read.csv('abc.csv', header = T)
abc.csv
# gender job age position address total check price survey
# 1 1 1 10 2 seoul 50 5 1200 3
# 2 1 2 20 5 busan 80 NA NA NA
# 3 1 2 30 4 daegu 60 5 2500 2
# 4 1 3 40 4 busan 70 3 1200 5
# 5 2 3 50 5 seoul 50 3 1400 6
# 6 2 2 60 7 daegu 40 3 3000 1
# 이게 데이터 프레임 구조 이다.
str(abc.csv)
# 'data.frame': 6 obs. of 9 variables:
# $ gender : int 1 1 1 1 2 2
# $ job : int 1 2 2 3 3 2
# $ age : int 10 20 30 40 50 60
# $ position: int 2 5 4 4 5 7
# $ address : Factor w/ 3 levels "busan","daegu",..: 3 1 2 1 3 2
# $ total : int 50 80 60 70 50 40
# $ check : int 5 NA 5 3 3 3
# $ price : int 1200 NA 2500 1200 1400 3000
# $ survey : int 3 NA 2 5 6 1
# 낯 설다. 그런데 맨 윗줄 만 알면된다. 6행(obs) 9열(variables)
# 아! abc.csv 데이터 프레임은 6행 9열의 구조이구나.
# 젠더 컬럼의 속성 자료형은 int형이구나!
# 중간에 address 속성의 자료형은 Factor 인데 Factor는 레이블이 있는 구조이다.
# 즉, 그룹핑이 가능하다는 이야기이다. 부산의 레벨값은 3이므로 3의 갯수를 카운트 한다면.
# 부산은 몇명 이런식의 나열이 가능하다는 이야기이다.
# 클래스
culAdd <- factor(abc.csv$address, levels = c("seoul", "busan", "daegu"))
culAdd
# [1] seoul busan daegu busan seoul daegu
# Levels: seoul busan daegu
qplot(culAdd) # 차트 그리기.
# 클래스2
culGender2 <- factor(abc.csv$gender, levels = c(2, 1), labels = c("여", "남"))
culGender2
# [1] 남 남 남 남 여 여
# Levels: 여 남
qplot(culGender2) # 차트 그리기.
# print 는 콘솔 출력
print(abc.csv) # 반복문장 에서 유용하다. 여기선 그냥 abc.csv를 쓰는것과 같다.
# View(대소문자 조심) 는 Excel 처럼 테이블 View로 출력
# 따로 탭에 나온다.
View(abc.csv)
# 튜플 을 출력 해줌
# 튜플 앞에서 6개 출력
head(abc.csv)
# gender job age position address total check price survey
# 1 1 1 10 2 seoul 50 5 1200 3
# 2 1 2 20 5 busan 80 NA NA NA
# 3 1 2 30 4 daegu 60 5 2500 2
# 4 1 3 40 4 busan 70 3 1200 5
# 5 2 3 50 5 seoul 50 3 1400 6
# 6 2 2 60 7 daegu 40 3 3000 1
# 튜플 앞에서 3개 출력
head(abc.csv, 3)
# gender job age position address total check price survey
# 1 1 1 10 2 seoul 50 5 1200 3
# 2 1 2 20 5 busan 80 NA NA NA
# 3 1 2 30 4 daegu 60 5 2500 2
# 튜플 뒤에서 6개 출력
# 현재 DB자체는 6줄 이라 앞뒤 다 같음.
tail(abc.csv, 6)
# gender job age position address total check price survey
# 4 1 3 40 4 busan 70 3 1200 5
# 5 2 3 50 5 seoul 50 3 1400 6
# 6 2 2 60 7 daegu 40 3 3000 1
# 컬럼 명만 출력
names(abc.csv)
# [1] "gender" "job" "age" "position" "address" "total" "check" "price" "survey"
# 컬럼 출력
colnames(abc.csv, do.NULL = T)
# [1] "gender" "job" "age" "position" "address" "total" "check" "price" "survey"
# 튜플 이름 출력
row.names(abc.csv)
# [1] "1" "2" "3" "4" "5" "6"
# 속성 집합 출력, 행이 몇개 인지, 어떤 형태의 구조인지, 컬럼은 뭐가 있는지
# mode : 자료형
# class : 자료구조
attributes(abc.csv)
# $names
# [1] "gender" "job" "age" "position" "address" "total" "check" "price" "survey"
# $class
# [1] "data.frame"
# $row.names
# [1] 1 2 3 4 5 6
# abc.csv$[cul] $는 직접참조(불러온 객체의 컬럼 접근)
abc.csv$job
# [1] 1 2 2 3 3 2
abc.csv$total
# [1] 50 80 60 70 50 40
# $가 R에선 직접참조 이다.
# 구조$컬럼
mytotal <- abc.csv$total # 토탈컬럼 "값 만" 따로 추출.
mytotal
# [1] 50 80 60 70 50 40
# 컬럼 접근의 또 다른 방식
# 배열 접근 방식.
abc.csv[6]
# total
# 1 50
# 2 80
# 3 60
# 4 70
# 5 50
# 6 40
# 여러 컬럼 접근하는 방법
abc.csv[c("job", "total")]
# job total
# 1 1 50
# 2 2 80
# 3 2 60
# 4 3 70
# 5 3 50
# 6 2 40
abc.csv[c("gender", "age", "position")]
# 숫자로 여러 컬럼 접근하는 방법
abc.csv[c(1, 3:4)]
# gender age position
# 1 1 10 2
# 2 1 20 5
# 3 1 30 4
# 4 1 40 4
# 5 2 50 5
# 6 2 60 7
abc.csv[ ,2] # 열 단독 접근
# [1] 1 2 2 3 3 2
abc.csv[ ,3]
# [1] 10 20 30 40 50 60
abc.csv[2] # 열 단독 접근(컬럼명 포함)
# job
# 1 1
# 2 2
# 3 2
# 4 3
# 5 3
# 6 2
abc.csv[3]
# age
# 1 10
# 2 20
# 3 30
# 4 40
# 5 50
# 6 60
abc.csv[2, ] # 행 단독 접근
# gender job age position address total check price survey
# 2 1 2 20 5 busan 80 NA NA NA
abc.csv[3, ]
# gender job age position address total check price survey
# 3 1 2 30 4 daegu 60 5 2500 2
# 1, 3행만 보여주세요.
abc.csv[c(1, 3), ]
# gender job age position address total check price survey
# 1 1 1 10 2 seoul 50 5 1200 3
# 3 1 2 30 4 daegu 60 5 2500 2
# 2, 4열을 보여주세요.
abc.csv[ ,c(2, 4)]
# job position
# 1 1 2
# 2 2 5
# 3 2 4
# 4 3 4
# 5 3 5
# 6 2 7
# 2, 5, 6열을 보여주세요.
abc.csv[ ,c(2, 5:6)]
# job address total
# 1 1 seoul 50
# 2 2 busan 80
# 3 2 daegu 60
# 4 3 busan 70
# 5 3 seoul 50
# 6 2 daegu 40
# 마이너스가 붙으면 exclude(2, 5, 6열 제외하고)
abc.csv[ ,-c(2, 5:6)]
# gender age position check price survey
# 1 1 10 2 5 1200 3
# 2 1 20 5 NA NA NA
# 3 1 30 4 5 2500 2
# 4 1 40 4 3 1200 5
# 5 2 50 5 3 1400 6
# 6 2 60 7 3 3000 1
Comments