서론
Part 3. 2장 데이터 변형 정리
데이터 변형
주요 코드
기능 | R 코드 | 비고 |
요인으로 집단 정의 | 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(dfn, func) : 데이터 프레임이 동질적인 경우만 (모두 문자, 숫자) 활용 가능 (데이터 프레임을 행렬로 변환 후 함수 적용) |
|
대용량 데이터의 함수 적용 | <sapply를 통한 간단한 R코딩> cors = sapply(dfm, cor, y=targetVariable) mask = (rank(-abs(cors)) <= 10) best.pred = dfm[, mask] lm(targetVariable~bes.pred) |
많은 변수가 있는 데이터에서의 다중 회귀 분석 1. 데이터 프레임에서 타겟 변수를 정한다. 2. 타겟 변수와 상관계수를 구한다. 3. 상관계수가 높은 상위 10개의 변수를 입력변수로 선정 4.타겟변수와 입력변수로 다중회귀분석을 실시한다. |
집단별 함수 적용 | tapply(vec, factor, func) | 데이터가 집단(factors)에 속해 있을 때 합계/평균 구하기 |
행집단 함수 적용 | by(drm, factor, func) 요인별 선형회귀선 구하기 model(dfm, factor, function(df) lm(종속변수 ~ 독립변수1 + 독립변수2 + ...+ 독립변수 k, data = df)) |
|
병력 벡터, 리스트들 함수 적용 | mapply (factor, vec1, vec2, vec3, .. veck) mapply ( factor, list1, list2 ... list k) |
자료형 데이터 구조 변환
기능 | R 코드 |
데이터 프레임의 내용에 쉽게 접근하기 | with(dfm, expr) attach(dfm) detach(dfm) |
자료형 변환하기 | as.character() as.complex() as.numeric() 또는 as.double() as.integer() as.logical() |
데이터 구조 변환하기 | as.data.frame() as.list() as.matrix() as.vector() |
문자열, 날짜 다루기
기능 | R 코드 | 비고 |
문자열 길이 | nchar("단어") | 단어나 문장 또는 벡터내 원소의 문자열 길이를 반환 (주의 사항) : length(vec)은 문자열의 길이가 아닌 벡터의 길이를 반환 |
문자열 연결 | 1. paste("단어1", "단어2",sep="-") 2. paste("the pi is approximately", pi) 3. paste(vec, "loves me", collapse=", and") |
1. 단어1-단어2 2. "the pi is approximately 3.14~~" 3. vec = c(1,2,3)이면 "1 loves me, and2 loves me, and 3 loves me" |
하위 문자열 추출 | substr("statistics", 1, 4) | 문자열 1부터 4까지 추출 (=stat) |
구분자로 문자열 추출 | strsplit(문자열, 구분자) | strsplit("split", "p") = "s" "lit" |
하위 문자열 대체 | sub(old, new, string) gsub(old, new, string) |
|
쌍별 조합 | mat=outer(문자열1, 문자열2, paste, sep="") | |
날짜 변환1 | 1. Sys.Date() 2. as.Date() |
1. 현재 날짜를 반환 2. 날짜 객체로 반환 |
날짜 조회 | 1. format(Sys.Date(), '%a') 2. format(Sys.Date(), '%b') 3. format(Sys.Date(), '%B') 4. format(Sys.Date(), '%d') 5. format(Sys.Date(), '%m') 6. format(Sys.Date(), '%y') 7. format(Sys.Date(), '%Y') |
1. 요일 조회 ("수") 2. 축약된 월이름 조회 ("8") 3. 전체 월 이름 조회 ("8월") 4. 일 조회 2자리 ("02") 5. 월 조회 2자리 ("08") 6.연 조회 2자리 ("23") 7.연 조회 4자리 ("2023") |
날짜 일부 추출 | 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(start, end, 1) |
'자격증 > ADsP' 카테고리의 다른 글
[ADsP] 3과목 - 4장(1,2절) (0) | 2023.08.11 |
---|---|
[ADsP] 3과목 - 3장 (0) | 2023.08.06 |
[ADsP] 3과목 - 2장 (3절_2) (0) | 2023.08.02 |
[ADsP] 3과목 - 2장 (3절_1) (0) | 2023.08.01 |
[ADsP] 3과목 - 2장 (1,2절) (0) | 2023.08.01 |