반응형
R언어를 이용한 기초 데이터 분석 입니다.
하나둘 따라가며 해보시면 좋을것 같습니다.
#Working directory 설정
getwd()#현재 directory 위치
setwd('D:/ADP/실기준비')#directory 설정
#데이터 불러오기
data<-read.csv('AirPassengers.csv', header = T, sep=',',stringsAsFactors = F)
#install.packages('data.table')
library(data.table)
fread('AirPassengers.csv', header = T, sep=',')#대용량 파일 읽을때 사용
#데이터 타입 확인
a<-'문자'
b<-2
mode(a)#데이터 타입 확인
is.numeric(b)#숫자형 벡터인지 확인
is.integer(b)#정수형 벡터인지 확인
is.double(b)#실수형 벡터인지 확인
is.character(a)#문자형 벡터인지 확인
is.factor(a)#Factor인지 확인
is.logical(a)#논리형인지 확인
is.null(a)#NULL인지 확인
is.na(a)#NA인지 확인
#데이터 타입 변환
as.numeric(b)#숫자형 변환
as.integer(b)#정수 변환
as.double(b)#실수 변환
as.character(b)#문자 변환
as.factor(b)#Factor 변환
#반복
rep(1,5)#1 1 1 1 1
rep(c(1,2),2)#1 2 1 2
seq(1,4,2)#1 3
#기초 통계
data<-seq(1,10,2)
data2<-seq(1,13,3)
mean(data)#평균
sum(data)#합
max(data)#최댓값
min(data)#최솟값
median(data)#중앙값
abs(data)#절대값
log(data)#Log값
sd(data)#표준편차
var(data)#분산
cov(data,data2)#공분산
cor(data,data2)#상관계수
#data.frame
iris_data<-iris
matrix_iris_data<-as.matrix(iris_data)#matirx로 변경
data_frame_iris_data<-as.data.frame(iris_data)#data.frame으로 변경
dim(iris_data)#차원 확인
str(iris_data)#데이터 프레임 구조 확인
nrow(iris_data)#로우 수 확인
ncol(iris_data)#컬럼 수 확인인
rownames(iris_data)#로우 index 확인
colnames(iris_data)#컬럼이름 확인
colnames(iris_data)<-c('SepalLength','SepalWidth','PetalLength','PetalWidth','Species')#컬럼이름 변경
iris_data$PetalWidth<-as.factor(iris_data$PetalWidth)#데이터 타입 factor 형으로 변경
#조회
iris_data[1,2]#1행 2열
iris_data[1,]#1행 전체 열
iris_data[1,'PetalWidth']#1행 PetalWidth열
iris_data$PetalWidth[1]#1행 PetalWidth열
iris_data$PetalLength>1.5
subset(iris_data, PetalLength>1.5)#PetalLength>1.5 것만 조회
#Join
JoinData1<-iris
JoinData2<-iris
merge(JoinData1, JoinData2, by='Sepal.Length')
#행 합치기
rbind(JoinData1, JoinData2)
#열 합치기
cbind(JoinData1, JoinData2)
#문자열 다루기
JoinData1$Species<-as.character(JoinData1$Species)#데이터 타입 문자자 형으로 변경
nchar(JoinData1$Species)#문자열 길이
JoinData1$paste<-paste(JoinData1$Species,JoinData2$Sepal.Length,sep=',')#문자 합치기 sep는 구분자
substr(JoinData1$paste,2,4)#2번째 부터 4번째까지 문자열 자르기
strsplit(JoinData1$paste,',')#구분자로 자르기
sub('s','t',JoinData1$paste)#해당 문자열(s) 찾아서 첫째번째 것만 교체(t)
gsub('vir','bir',JoinData1$paste)#해당 문자열(vir) 찾아서 전부 교체(bir)
grep('vir', JoinData1$paste)#해당 문자열이 포함된 인덱스 출력
#날짜
Sys.Date()#현재 날짜
date<-'2020-10-25'
data<-as.Date(date)#date타입 변경
format(Sys.Date(),'%Y-%m-%d %B %b %a')
# %Y : 4자리 년
# %y : 2자리 년
# %m : 월
# %d ; 2자리 일
# %B : 전체 월
# %b : 축약 월
# %a : 요일
#if else 문
a<-5
if(a<=5){
print(paste(a,"a는 5보다 작다"))
}else if(a>5 & a<10){
print(paste(a,"a는 8보다 크다"))
}else{
print(paste(a,"a는 10보다 크다"))
}
ifelse(a>5, '5보다 크다','5보다 작다')
#for 문
for(i in seq(1,4,2)){
if(i==3){
print(i)
break
}
}
#dplyr 패키지(plyr과 함께 쓸 때 문제 생김)
#install.packages('dplyr')
library(dplyr)
#select(열 선택), filter(조건), mutate(변수 추가), group_by(데이터 그룹화), summarise(통계량 계산), arrange(데이터 정렬), left, right, inner, full join(조인)
data<-iris
head(data)
filter(data, Species=='setosa' & Petal.Length>1.5)
select(data, Species, Petal.Length)
group<-group_by(data, Species)
summarise(group, group_mean=mean(Petal.Width), group_max=max(Petal.Width), group_count=n())
#mean, median, var, sd, min, max, sum, n
mutate(data, new_col=ifelse(Petal.Width>0.2,1,0))
arrange(data, Petal.Width, Petal.Length)
arrange(data, desc(Petal.Width))
data1<-filter(data, Petal.Length>1.5)
data2<-filter(data, Petal.Length>1.4)
left_join(data1, data2, by='Petal.Width')#outer
right_join(data1, data2, by='Petal.Width')#outer
inner_join(data1, data2, by='Petal.Width')#inner
full_join(data1, data2, by='Petal.Width')
#reshape2
#install.packages('reshape2')
library(reshape2)
data<-airquality
head(data)
air_melt<-melt(data, id.vars = c('Month','Day'), na.rm=T)
air_dcast<-dcast(air_melt, Month+Day~variable, fun.aggregate = mean)
여기까지 R언어를 활용한 기초데이터 분석이였습니다.
도움이 되셨으면 합니다.
반응형
댓글