Goals
- 데이터 프레임, 데이터 프레임과 리스트의 차이점, 데이터 구조 확인
- 히스토그램, 분산
- 표준편차2개 이상 변수들의 상관관계, 이원 교차표, prop. table, CrossTable
- Data Frame 데이터 프레임 : 행(row) 과 열(column)을 갖는
# 데이터베이스의 테이블 또는 엑셀의 스프레드시트와 같은 형식의 데이터
# 각 컬럼에는 같은 타입의 값들만 저장할 수 있음.
df1<- data.frame(a = c(1:3),
b = c('aaa','bbb','ccc'), # 컬럼별 데이터 삽입
c = c(11, 22, 33))
df1
a b c
1 1 aaa 11
2 2 bbb 22
3 3 ccc 33
> df1[1,1]
[1] 1
> df1[1:3,2]
[1] aaa bbb ccc
Levels: aaa bbb ccc
> df1[ ,3]
[1] 11 22 33
> df1$a
[1] 1 2 3
df1<- data.frame(a = c(1:3),
b = c('aaa','bbb','ccc'),
c = c(11, 22, 33),
stringsAsFactors = F)
> df1[1:3,2]
[1] "aaa" "bbb" "ccc"
- 데이터 프레임과 리스트의 차이점
names <- c("Abc","Def")
ages <- c(30,20,10)
df_patient <- data.frame(name = names, age = ages, stringsAsFactors = F) # 데이터 프레임은 실행불가 ( 행의 개수가 다름 )
Error in data.frame(name = names, age = ages, stringsAsFactors = F) :
arguments imply differing number of rows: 2, 3
# 데이터 프레임을 만들기 위한 벡터들은 모두 같은 갯수의 원소를 가져야 함.
# 서로 다른 원소를 갖는 벡터들은 데이터프레임을 만들 수 었음.
> list_patient <- list(name = names, age = ages)
> list_patient
$name
[1] "Abc" "Def"
$age
[1] 30 20 10
# 리스트는 서로 다른 갯수의 원소를 갖는 벡터들로 생성할 수 있다.
# R 세션에서 사용하던 변수 또는 데이터를 저장
# 저장하는 파일의 확장자 : rda, rda, REData
save(df_patient, list_patient,
file = 'patient.rda')
save()
#Global Env 에 있는 변수 모두 삭제 후 저장한 데이터 로딩
load("patient.rda")
# 데이터프레임의 구조(structure)
str(mydata)
# 데이터 일부 확인
head(mydata)
tail(mydata)
# 기술 통계량 확인
# Quartile: 1/4, 2/4, 3/4 위치의 값들
summary(mydata)
# 범위(range) : 최솟값과 최댓값을 출력
range(mydata$price)
#diff 연속된 두 숫자의 차이
diff ( range(mydata$price)) # max - min
# Quantile
quantile(mydata$price, probs = c(0.1, 0.9)) # probability 구간을 지정 가능
10% 90%
8431.9 15999.1
> quantile(mydata$price, probs = seq(0,1.0,0.25))
0% 25% 50% 75% 100%
3800.0 10995.0 13591.5 14904.5 21992.0
# 히스토그램(histogram) :
# 연속된 수치 구간을 일정한 간격으로 나눠서
# 그 구간에 해당하는 데이터들의 갯수(빈돗수) 막대로 그려주는 그래프 !!
hist(mydata$price, breaks = seq(0, 25000, 1000))
ggplot(data = mydata,
mapping = aes(x = price)) +
geom_histogram( bins =10, color = 'black', fill = 'white' )
# 분산 표준편차
> var(mydata$price) # 분산
[1] 9749892
> sd(mydata$price) # 표준편차
[1] 3122.482
# 이산형 데이터(discrete data) 또는 범주형 데이터
> table(mydata$year)
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
3 1 1 1 3 2 6 11 14 42 49 16 1
- 2개 이상의 변수들 간의 상관 관계 -> 산점도(산포도) 그래프
# 중고차의 주행거리(mileage)가 가격(price) 영향?
plot(x = mydata$mileage, y = mydata$price, main = '주행거리 vs 가격',
xlab = '주행거리', ylab = '가격')
ggplot(data = mydata,
mapping = aes(x = mileage, y = price))+
geom_point()+ xlab('주행거리(mile)') + ylab('가격(USD)')+ ggtitle('주행거리vs가격')
ggplot(data = mydata,
mapping = aes(x = mileage, y = price, color = model))+
geom_point()+ xlab('주행거리(mile)') + ylab('가격(USD)')+ ggtitle('주행거리vs가격')
# 이원교차표 (two-way cross table)
# 두개의 명목 변수 간의 관계를 파악
install.packages('gmodels')
library(gmodels)
#mydata 데이터 프레임에 새로운 변수를 추가
mydata$conserve <- mydata$color %in% c('Black','Gray', 'Silver','White')
#table(): 빈돗수, 도수분포표
> table(mydata$conserve)
FALSE TRUE
51 99
> t <- table(mydata$conserve)
# prop.table() 변수들의 비율을 표로 작성 가능
> prop.table(t)
FALSE TRUE
0.34 0.66
> t2 <- table(mydata$model)
> t2
SE SEL SES
78 23 49
> prop.table(t2)
SE SEL SES
0.5200000 0.1533333 0.3266667
CrossTable(x = mydata$conserve, y = mydata$model)
>> 순서대로 읽는다
'R > R기초' 카테고리의 다른 글
R15_ R Data Types (0) | 2019.10.23 |
---|---|
R14_ interactive graph (0) | 2019.10.22 |
R13_ 지도 시각화 (2) | 2019.10.21 |
R12_ 텍스트 마이닝 (0) | 2019.10.18 |
R11_복지패널 데이터분석3 (0) | 2019.10.17 |