아아.. 이노무 또옹커엄.. 몇 년 전에는 젤 좋은 노트북이었는데.. 이제는 고물이 되었군요.
노트북에 임시저장해두고 나갔는데.. 날아가버렸어요 ㅠㅠ 흑흑 무튼. 오늘은 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 |