패키지 설치하고 로드하기
install.packages('패키지 이름') # 패키지 설치
library('패키지 이름') # 패키지 로딩
설치할 때
- install.packages('reshape') : 따옴표 사용해서 문자열로 입력해야한다.
로드할 때는 둘다 가능
- library('reshape') : 따옴표 사용해서 문자열로 입력 가능
- library(reshape) : 따옴표 없이 패키지 이름을 바로 입력 가능
reshape 패키지: melt, cast
1) 패키지 및 데이터 불러오기
# 패키지 설치 및 로딩
install.package('reshape')
library(reshape)
# 예시 데이터 로딩
data(airquality)
names(airquality)
colnames(airquality) <- tolower(colnames(airquality))
names(airquality)
data( )
names( ) : 데이터셋의 컬럼 확인하기
colnames( ): 데이터셋의 컬럼명을 확인하기
tolower( ) : 모든 문자열을 소문자로 변환하기
2) melt
# melt(data, id= , [])
ex1 <- melt(airquality, id=c('month', 'day'), na.rm=TRUE)
- 기준 컬럼: month, day ➡️ id 에 지정하기
- 나머지 컬럼(ozone, solar.r, wind, temp) 들은 'variable', 'value' 를 통해 길게 쌓인다.
- na.rm = TRUE : NA 값은 제거하는 옵션
3) cast
# cast(data, formula= , fun.aggregate=NULL, margins=NULL, subset=NULL)
ex2 <- cast(ex1, day~month~variable)
ex3 <- cast(ex1, month~variable, mean)
ex4 <- cast(ex1, month~variable, mean, margins=c('grand_row', 'grand_col'))
ex5 <- cast(ex1, day~month, mean, subset=variable=='ozone')
ex6 <- cast(ex1, month~variable, range) # min, max
- melt로 길게 녹인 데이터를 다시 wide한 형태로 바꾸려면 cast 함수를 사용하자.
formula | fun.agg | margins / subset | 의미 |
day~ month~ variable |
X | X | 행:day, 열:month 인 matrix가 variable별로 생김 (3차원) |
month~ variable |
mean | X | 행:month, 열:variable -> 각 컬럼별 month 평균 계산 |
month~ variable |
mean | margins = c('grand_row', 'grand_col') | 행:month, 열:variable -> 각 컬럼별 month 평균 계산, 합계 |
day~ month |
mean | subset = variable=='ozone' | 행:day, 열:month -> 'ozone' 컬럼에 대해서만 평균 계산 |
month~ variable |
range | X | 행:month, 열:variable -> 각 컬럼별 month 최소(_X1), 최대값(_X2) |
4) 개념도 그림
sqldf 패키지
1) 패키지 및 데이터 불러오기
install.packages('sqldf')
library(sqldf)
rm(list=ls())
data(iris)
2) SQL 쿼리 사용하여 데이터 조회
data1 <- sqldf('SELECT * FROM iris')
a1 <- sqldf('SELECT * FROM iris LIMIT 5')
a2 <- sqldf('SELECT COUNT(*) FROM iris WHERE species LIKE "%sa"')
plyr 패키지
1) 함수 종류
데이터 타입 | array | dataframe | list | nothing |
array | aaply | adply | alply | a_ply |
dataframe | daply | ddply | dlply | d_ply |
list | laply | ldply | llply | l_ply |
n replicates | raply | rdply | rlply | r_ply |
function arguments | maply | mdply | mlply | m_ply |
- 함수이름은 5개의 문자열로 구성 ➡️ [입력 데이터 타입] [출력 데이터 타입] p l y
- apply 함수와 작동 방식이 비슷함 (split - apply - combine)
2) 패키지 불러오기
library(plyr)
rm(list=ls())
3) ddply
set.seed(1)
df <- data.frame(year=rep(2019:2022, each=5), count=round(runif(20, 1, 40)))
a1 <- ddply(df, 'year', function(x){
mean.count = mean(x$count)
sd.count = sd(x$count)
cv = sd.count/mean.count
data.frame(m.count=mean.count, s.count=sd.count, cv.count=cv)
})
a2 <- ddply(df, .(year), summarise, mean.count=mean(count))
a3 <- ddply(df, .(year), transform, total.count=sum(count))
- 데이터프레임을 분할하고, 함수에 적용하여 결과를 데이터프레임으로 반환한다.
[포맷]
ddply(데이터, .(그룹핑 기준 변수명), ddply 내부함수, 적용할 함수)
- 그룹핑 기준 변수명: 'year' or .(year) -> 둘다 입력 가능
- ddply 내부함수: summaries, transform, mutate, subset
4) adply
df2 <- data.frame(A=c(1,2,3,4), B=c(4,5,6,7), C=c(1,3,5,7))
a4 <- adply(df2, 1, sum) # row sum
a5 <- adply(df2, 2, sum) # col sum
[포맷]
adply(데이터, 적용방향, 적용할 함수)
- 입력 데이터: 2차원 데이터셋(array, matrix, dataframe)
- 적용방향: 1(행), 2(열)
패키지 종류
1) reshape
2) reshape2
3) sqldf
4) plyr
'데이터 처리 도구 > R' 카테고리의 다른 글
R 기초 / 제어문, 사용자 정의 함수 (0) | 2022.08.11 |
---|---|
R 기초 / apply 함수 (0) | 2022.08.09 |
R 기초 / 연산자 (0) | 2022.08.07 |