본문 바로가기
R

34. 데이터 마트 II

by #Glacier 2018. 11. 22.
반응형

아아.. 이노무 또옹커엄.. 몇 년 전에는 젤 좋은 노트북이었는데.. 이제는 고물이 되었군요.

노트북에 임시저장해두고 나갔는데.. 날아가버렸어요 ㅠㅠ 흑흑 무튼. 오늘은 sqldf 패키지부터 알아가보도록 할게요..


1. sqldf 패키지 : R에서 sql의 명령어를 사용가능하게 해주는 패키지입니다.

-SAS에서의 proc sql같이 R에서 활용 가능합니다. 예시로,

sql : select*from [data frame]

- R : sqldf("select*from [data frame]")

sql : select*from [data frame] numrows 10

- R : sqldf("select*from[data frame] limit 10")

sql : select*from [data frame] where [col] = 'char%'

- R : sqldf("select*from[data frame] where [col] like 'char%'")

sql : head([df])

- R : sqldf("select*from[df] limit 6")

sql : subset([df], grep1("qn%", [col]))

- R : sqldf("select*from [df] where [col] like 'qn%'")

sql : subset([df], [col] %in% c("BF", "HF")

- R : sqldf("select*from [df] where [col] in ('BF', 'HF')")

sql : rbind([df1], [df2])

- R : sqldf("select*from [df1] union all select*from [df2]")

sql : merge([df1], [df2])

- R : sqldf("select*from [df1], [df2]")

sql : df[order([df]$[col], decreasing=T), ]

- R : sqldf("select*from [df] order by [col] desc")


이런식으로 사용가능합니다. 실제로 간단하게 해볼께요.


install.packages("sqldf")
library(sqldf)

sqldf("select*from iris limit 6")


  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1            5.1            3.5          1.4         0.2  setosa
2           4.9            3.0          1.4         0.2  setosa
3           4.7            3.2          1.3         0.2  setosa
4           4.6            3.1           1.5         0.2  setosa
5           5.0            3.6          1.4         0.2  setosa
6           5.4            3.9          1.7         0.4  setosa


요런 식으로 나옵니다.

위의 식을 가지고 조금 응용해봅시다.


sqldf("select*from iris where [Sepal.Length] > 5.5 order by [Sepal.Length] desc limit 6")

-iris 데이터의 Sepal.Length가 5.5보다 크면서 Sepal.Length기준으로 내림차순하고 6개의 자료만 보여주게끔 한 명령입니다.

-줄줄이 써도 되니 정말 쉽져~ 아래를 보니 virginica 종이 Sepal.Length의 길이가 긴 편인 것 같네요.


  Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
1            7.9            3.8          6.4         2.0 virginica
2            7.7            3.8          6.7         2.2 virginica
3            7.7            2.6          6.9         2.3 virginica
4            7.7            2.8          6.7         2.0 virginica
5            7.7            3.0          6.1         2.3 virginica
6            7.6            3.0          6.6         2.1 virginica



2. plyr

- plyr은 apply 함수에 기반해 데이터와 출력변수를 동시에 배열로 치환하여 처리하는 패키지입니다.

- split-apply-combine , 즉 데이터 분리, 처리, 결합하는 필수적인 데이터 처리기능을 제공합니다.


 

 array

data frame

list 

nothing 

array 

aaply

adply

alply 

a_ply 

 data frame

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 



이제 plyr를 설치해봅시다.

install.packages("plyr")
library(plyr)


head(airquality)


  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6


#위의 Temperature을 가지고 변동계수 CV(Coefficient of Variation)를 산출해봅시다.


dd.test<-ddply(airquality, "Day", function(x) {
m.value <- mean(x$Temp)
sd.value<-sd(x$Temp)
cv<-round(sd.value/m.value, 4)
data.frame(cv.value=cv)
})


#dd.test라는 변수 안에, ddply(dataframe입력-처리-dataframe반환)를 사용하여, airquality데이터가 함수x에 대입되고,  Day별로 나타내게 됩니다.

#m.value안에 airquality의 온도의 평균값을 집어넣고, sd.value안에 온도 표준편차를 집어넣습니다.

#cv안에 sd.value를 m.value로 나눠주고, round( ,4)는 소숫점 4번 째 자리까지 표현하는 것입니다.


head(dd.test, 10)
   Day cv.value
1    1   0.1099
2    2   0.1011
3    3   0.1223
4    4   0.1427
5    5   0.1647
6    6   0.1031
7    7   0.1192
8    8   0.1665
9    9   0.1641
10  10   0.1256


# 요렇게 되었죠 ㅎㅎ


3. data table 패키지

- data table 패키지는 R에서 가장 많이 사용하는 데이터 핸들링 패키지 중 하나입니다.

- data.table 은 큰 데이터를 탐색, 연산, 병합 하는데 아주 유용하다.

- 기존 data.frame 방식보다 월등히 빠른 속도이다

- 특정 column을 key 값으로 색인을 지정한 후 데이터를 처리한다.

- 빠른 그루핑과 ordering, 짧은 문장 지원 측면에서 데이터프레임보다 유용하다.

- data.table은 data.frame보다 최소 20배 가량 빠르므로, 큰 용량의 데이터의 경우 이용하느 것이 더 효과적입니다.



이번 챕터는 요기까지~!


반응형

'R' 카테고리의 다른 글

36. 데이터분석의 이해  (0) 2018.11.22
35. 데이터 가공  (0) 2018.11.22
33. 데이터마트  (0) 2018.11.22
32. 데이터 변형  (0) 2018.11.22
31. 데이터 구조와 데이터 프레임 II  (0) 2018.11.22