자격증/ADSP

데이터 분석 준전문가(adsp) - 데이터 변형

IT grow. 2020. 1. 30. 17:04
반응형

1. 주요 코드 

 

요인으로 집단 정의 

 

v <- c ( 24,23,52,46,75,25 ) 

w <- c ( 87, 86,92,84,77,68 ) 

f <- factor(c("A","A","B","B","C","A"))


벡터를 여러 집단으로 분할 ( 벡터의 길이만 같으면 됨 ) 

 

groups <- split(v,f)

groups <- split(w,f)

groups <- unstack(data.frame(v,f)) 

 

--> 두 함수 모두 모두 벡터로 된 리스트를 반환 


데이터 프레임을 여러집단으로 분할 

 

MASS 패키지 , Cars93 데이터셋 활용 

library(MASS)

sp <- split(Cars93$MPG,city,Cars93$Origin)

median(sp[[1]])

 


리스트의 각 원소에 함수 적용 

 

lapply ( 결과를 리스트 형태로 반환 ) 

list <- lapply(l,func)

sapply(결과를 벡터 또는 행렬로 반환) 

vec <- sapply(l,func)

 


행렬에 함수 적용 

 

m <- apply ( mat , 1 , func ) 

m <- apply ( mat , 2 , func ) 

 


데이터프레임에 함수 적용 

 

dfm <- lapply(dfm, func)

dfm <- sapply(dfm, func)

dfm <- apply(dfm, func) : 데이터프레임이 동질적인 경우만 ( 모두 문자 , 숫자 ) 활용 가능 

 

데이터프레임을 행렬로 변환 후 함수 적용 

 


대용량 데이터의 함수적용

 

<sapply를 통한 간단한 R코딩>

cors <- sapply(dfm,cor,y=fargetVariabele)

mask <- (rank(-abs(cors)) <= 10)

best.pred <- dfm [,mask]

lm(targetVariabele~bes.pred) 

 

-->

많은 변수가 있는 데이터에서의 다중회귀분석 

1.데이터 프레임에서 타켓변수를 정한다.

2.타켓변수와 상관계수를 구한다.

3.상관계수가 높은 상위 10개의 변수를 입력변수로 선정

4.타켓변수와 입력변수로 다중회귀분석을 실시한다.

 


집단별 함수 적용 

 

tapply(vec, factor, func) : 데이터가 집단 ( factors ) 에 속해있을 때 합계 / 평균 구하기 

 


행집단 함수 적용 

 

by(drm, factor, func ) 

요인별 선형회귀선 구하기 

model(dfm, factor, function(df) 

im(종속변수 ~ 독립변수1 + 독립변수2 + .... + 독립변수k , data=df )) 

 


병력 벡터 , 리스트들 함수 적용 

 

mapply( factor , vec1 , vec2 , vec3 , ... , vec k ) 

mapply( factor , list1 , list2 , list3 , ...., list k ) 

 

 

 

 

2. 문자열 날짜 다루기 

 

문자열 길이 

nchar("단어")

--> 단어나 문장 또는 벡터내 원소의 문자열 길이를 반환 

[주의] length(vec) 문자열의 길이가 아닌 벡터의 길이를 반환 


문자열 연결 

paste("단어1","단어2",sep="-")

paste("the pi is approximately" , pi ) 


하위문자열 추출 

substr("statistics",1,4) : 문자열의 1첫째에서 4자리까지 추출 


구분자로 문자열 추출 

strsplit(문자열,구분자)


하위 문자열 대체 

sub(old,new,string)

gsub(old,new,string)


쌍별 조합

mat <- outer( 문자열1, 문자열2, paste, sep = "")


날짜 변환1

Sys.Date() : 현재 날짜를 반환

as.Date() : 날짜 객체로 반환 


날짜 변환2 

format(Sys.date() , format = %m/%d/%y)


날짜 조회 

format(Sys.Date(), "%a") : 요일 조회 

format(Sys.Date(), "%b") : 축약된 월이름 조회 

format(Sys.Date(), "%B") : 전체 월이름 조회

format(Sys.Date(), "%d") : 두자리 숫자의 일 조회

format(Sys.Date(), "%m") : 두자리 숫자의 월 조회 

format(Sys.Date(), "%y") :  두자리 숫자의 연도 조회 

format(Sys.Date(), "%Y") :  네자리 숫자의 연도 조회 


날짜 일부 추출 

d <- as.Date("2014-12-25")

p <- as.POSIXlt(d)

p$yday

start <- as.Date("2014-12-01")

end <- as.Date("2014-12-25")

seq(from=start, to=end, by=1)

 

 

 

 

 

 

 

 

 

반응형