R 기술분석 스크립트
install.packages("data.table")
library("data.table")
DF <- fread("C:\\R\\2\\example_studentlist.csv", data.table=F)
DF <- read.csv("C:\\R\\2\\example_studentlist.csv", data.table=F)
DF <- read.csv("C:\\R\\2\\example_studentlist.csv")
# sp_help 같은거
str(DF)
#컬럼리스트
ls(DF)
#데이터 전체 조회
DF
#삭제
detach(DF)
#등록
attach (DF)
#등록된 항목
search()
#평균
mean(height, na.rm=T)
#중앙값
median(height, na.rm=T)
#범위 (최소 최대값)
range(height, na.rm=T)
#사분위
quantile(height,na.rm=T)
#사분위 -- 25% 와 75% 사이
#즉 중앙값을 구하는 기준으로 4분위를 구한다. InterQuartile Range
IQR(height, na.rm=T)
#평균, 중앙값, Q1, Q3 한번에 보기
summary(height, na.rm=T)
#box plot
boxplot(height)
#상관계수
cor(height, weight)
#피어슨 적률 상관계수
cor.test(height, weight)
#3개의 컬럼만 뽑아서 상관계수를 구해보자
cor(DF[,c(3,7,8)])
DF
#cor var 과 같은 다변량 함수의 결측치(빠진값) 는 디테일하게 다루어야 해서
# var 는 되던데......설명이 이상하네...213page
#아래 명령어가 먹지 않음
cor(weight, height, na.rm=T)
#대신 이게 먹는데, ns.rm=T 와 같은 의미임
cor(weight, height, use="complete.obs")
#결측치 테스트를 위해 하나의 테이블을 더 만들고
DF2<-DF
#두개의 값을 NA로 업데이트 한다.
DF2
DF2[2,7]<- NA
DF2[4,8]<- NA
DF2
detach(DF)
attach (DF2)
search()
#값중 NA 가 있으면 생깜...
cor(height, weight)
cor(weight, height, use="complete.obs") #전체 행 제
cor(weight, height, use="pairwise.complete.obs") #피어슨이 사용한 방법 해당 백터만 제거
cor(weight, height, use="everything") # na.rm=F 와 같은 값 NA값도 포함해 구함 그러니 값이 안나오겠지
#분산과 공분산 구하기
var(height, na.rm=T)
var(height, weight, na.rm=T)
cov(height, weight, use="complete.obs")
var(DF2[,c(3,7,8)], na.rm=T)
DF2
#표준편차 구하기 (한개 변수만 넣어서 구할수 있음)
sd(height, na.rm=T)
#표준화
scale(height)
#무식하게 한번 해서 비교 해보면
#표준화는 평균을 0으로 만들고, 표준편차로 나누어 주면 된다.
(height - mean(height, na.rm=T))/sd(height, na.rm=T)
mean(height)
#변동계수
#서로 단위가 다른 평균과 표준편차를 비교하기 위해서 쓴다.
#변공계수가 크면 값이 더 넓게 분포함
sd(height, na.rm=T)/mean(height, na.rm=T)
sd(weight, na.rm=T)/mean(weight, na.rm=T)
#> sd(height, na.rm=T)/mean(height, na.rm=T)
#[1] 0.0476805
#> sd(weight, na.rm=T)/mean(weight, na.rm=T)
#[1] 0.1736455
# 아 몸무게가 더 넓게 퍼져 있구나.............
# 콘솔 지우기 ctrl - L
# 모든변수 지우기
###############################################################################
# EX 06
###############################################################################
rm(list=ls())
#
search()
detach (DF)
detach(DF2)
DF<-read.csv("C:\\R\\2\\example_salary.csv", stringsAsFactors=T, na="-")
DF<-read.csv("C:\\R\\2\\example_salary.csv", na="-")
DF<-read.csv("C:\\R\\2\\example_salary.csv")
search()
rm(DF)
detach(DF)
str(DF)
#컬럼이름 확인
colnames(DF)
#컬럼이름 변경
colnames(DF) <- c("age", "salary", "specialSalary", "workingTime", "numberOfWorker", "career", "sex")
#검색목록에 데이터프레임 올리기
attach(DF)
#평균구하기
Mean <- mean(salary, na.rm=T)
Mean
#중앙값 구하기
Mid <- median(salary, na.rm=T)
Mid
#범위 구하기
Range <- range(salary, na.rm=T)
Range
#관측치 찾아보기
w <- which(DF$salary==4064286)
DF[w,]
#사분위구하기
Qnt <- quantile(salary, na.rm=T)
Qnt
###############################################################################
# EX 07
###############################################################################
rm(list=ls())
#
search()
detach (DF)
detach(DF2)
DF<-read.csv("C:\\R\\2\\example_salary.csv", stringsAsFactors=F, na="-")
DF<-read.csv("C:\\R\\2\\example_salary.csv", na="-")
DF<-read.csv("C:\\R\\2\\example_salary.csv")
# top 으로 보기
head(DF, 5)
str(DF)
#컬럼이름 확인
colnames(DF)
#컬럼이름 변경
colnames(DF) <- c("age", "salary", "specialSalary", "workingTime", "numberOfWorker", "career", "sex")
#성별로 평균 구하기
# 필요 라이브러리
install.packages("ggplot2")
library("ggplot2")
install.packages("reshape2")
library("reshape2")
str(DF)
#tapply 는 group by 로 이해하면 된다. 남여 평균 급여
temp <- tapply(DF$salary,DF$sex, mean, na.rm=T)
temp
melt<-melt(temp)
ggplot(melt, aes(x=Var1, y=value, fill=Var1))+geom_bar(stat="identity")
########################### 기본 그림 그리기 인듯
pie(temp)
pie(temp,col=rainbow(10))
pct <- round(temp/sum(temp)*100,1)
names(pct)
lab <- paste(names(temp),"\n",pct,"%")
pie(temp,main="남여 평균 연봉",col=rainbow(10),cex=0.8, labels=lab )
pie(pct)
pie(temp,main="남여 평균 연봉",col=rainbow(10),cex=0.8, labels=lab )
par(new=T)
pie(temp,radius=0.6, col="white", labels=NA, border=NA)
barplot(temp,main="남여 평균 연봉",col=rainbow(10), space=0.1,ylim=c(0,3000000), cex.name=0.7 )
barplot(temp,main="남여 평균 연봉",col=rainbow(10), space=0.1,xlim=c(0,3000000), cex.name=0.7, horiz=T)
########################### 기본 그림 그리기 인듯
# 에러남 찾아볼것
savePlot("a.png", type="png")
# 남여 표준편차 : 격차도 심하네
sd <- tapply(DF$salary,DF$sex, sd, na.rm=T)
sd
# 남여 Range :
rg <- tapply(DF$salary,DF$sex, range, na.rm=T)
rg
#경력별 평균월급
temp <- tapply(DF$salary,DF$career, mean, na.rm=T)
temp
melt <- melt(temp)
ggplot(melt, aes(x=Var1, y=value, group=1)) +geom_line(colour="skyblue2", size=2) +coord_polar() + ylim(0,max(melt$value))
#표준편차
temp <- tapply(DF$salary,DF$career, sd, na.rm=T)
temp
#경력별 범위
temp <- tapply(DF$salary,DF$career, range, na.rm=T)
temp
#가장 적게 받는 월급 집단
a1 <-DF[which(DF$salary==1172399),]
a2 <-DF[which(DF$salary==1685204),]
a3 <-DF[which(DF$salary==1117605),]
a4 <-DF[which(DF$salary==1245540),]
a5 <-DF[which(DF$salary==1548036),]
list <-list(a1,a2,a3,a4,a5)
list
###############################################################################
# EX 08
###############################################################################
rm(list=ls())
#
detach (DF)
search()
install.packages("ggthemes")
DF<-read.csv("C:\\R\\2\\example_cancer.csv", stringsAsFactors=F, na="-")
str(DF)
attach(DF)
mean(age)
summary(age)
boxplot(age)
boxplot(age,range=1.5)
grid
boxplot(age,range=3)
distIQR<-IQR(age,na.rm=T)
distIQR
posIQR <- quantile(age,probs = c(0.25,0.75), na.rm=T)
posIQR
posIQR <- quantile(age,probs = c(0.1,0.9), na.rm=T)
posIQR
DownWhisker <- posIQR[[1]] -distIQR*1.5
UpWhisker <- posIQR[[2]] +distIQR*1.5
DownWhisker; UpWhisker
Outlier <-subset(DF, subset = (DF$age < DownWhisker | DF$age > UpWhisker))
Outlier
###############################################################################
# EX 09
###############################################################################
rm(list=ls())
#
detach (DF)
search()
DF<-read.csv("C:\\R\\2\\example_salary.csv", stringsAsFactors=F, na="-")
head(DF,5)
head(DF)
#컬럼이름 확인
colnames(DF)
#컬럼이름 변경
colnames(DF) <- c("age", "salary", "specialSalary", "workingTime", "numberOfWorker", "career", "sex")
#성별로 평균 구하기
head(DF)
#표준화시키기
Scale <- scale(DF$salary)
Scale
head(Scale,10)
#표준화 한 값을 데이터프레임에 포함시키기
DF <-cbind(DF,scale = Scale)
str(DF)
g1<-ggplot(DF,aes(x=scale,y=age))
g2<-geom_segment(aes(yend=age),xend=0)
g3<-g1+g2+geom_point(size=7,aes(colour=sex, shape=career))+theme_minimal()
g3
DF
install.packages("combinat")
library("combinat")
nrow(combn(45,6))
720/48
install.packages("gtools")
library("gtools")
1/nrow(combinations(45,6))
nrow(combinations(6,4))
#이항분포 9번성공
dbinom(9, 10000, 0.0009)