Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- MSSQL
- mybatis
- mapreduce
- JavaScript
- hadoop
- GIT
- SPC
- Sqoop
- Java
- 공정능력
- R
- Python
- 보조정렬
- Android
- Eclipse
- NPM
- Kotlin
- SQL
- tomcat
- es6
- IntelliJ
- SSL
- xPlatform
- react
- table
- Express
- plugin
- vaadin
- Spring
- window
Archives
- Today
- Total
DBILITY
R doBy package ,aggregate 사용하기 본문
반응형
※R을 이용한 데이터 분석 실무를 참고하자.
doBy 패키지는 summaryBy(), orderBy(), splitBy(), sampleBy()와 같이 데이터프레임에서 특정 값에 따라 데이터를 처리한다.
summaryBy() 컬럼값에 따라 그룹핑 후 처리
sampleBy() 컬럼값에 따라 그룹핑 후 샘플 추출
orderBy() 컬럼값에 따라 정렬
패키지가 설치가 안된 경우 install.packages("doBy") 또는 Rstudio package패널에서 설치한다.
formula(수식)은 + 는 연결, - 는 제외, 앞은 대상 ~ 기준 형태로 기준을 나타낸다.
aggregate()함수는 일반적인 집계연산에 적용 가능하다.
> install.packages("doBy")
Installing package into ‘C:/Users/사용자/Documents/R/win-library/3.5’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.5/doBy_4.6-2.zip'
Content type 'application/zip' length 3568208 bytes (3.4 MB)
downloaded 3.4 MB
package ‘doBy’ successfully unpacked and MD5 sums checked
The downloaded binary packages are in
C:\Users\사용자\AppData\Local\Temp\Rtmp0OqVCM\downloaded_packages
> library("doBy")
#전체에 대한 요약정보
> summary(iris)
Sepal.Length Sepal.Width Petal.Length
Min. :4.300 Min. :2.000 Min. :1.000
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600
Median :5.800 Median :3.000 Median :4.350
Mean :5.843 Mean :3.057 Mean :3.758
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100
Max. :7.900 Max. :4.400 Max. :6.900
Petal.Width Species
Min. :0.100 setosa :50
1st Qu.:0.300 versicolor:50
Median :1.300 virginica :50
Mean :1.199
3rd Qu.:1.800
Max. :2.500
#열에 대한 분위별 보기
> quantile(iris$Sepal.Length)
0% 25% 50% 75% 100%
4.3 5.1 5.8 6.4 7.9
> quantile(iris$Sepal.Length,seq(0,1,by = 0.25))
0% 25% 50% 75% 100%
4.3 5.1 5.8 6.4 7.9
> quantile(iris$Sepal.Length,seq(0,1,by = 0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
4.30 4.80 5.00 5.27 5.60 5.80 6.10 6.30 6.52 6.90 7.90
#iris데이터에서 Species를 기준으로 Sepal.Length,Sepal.Width의 요약정보를 표시
> summaryBy(Sepal.Length+Sepal.Width ~ Species,iris)
Species Sepal.Length.mean Sepal.Width.mean
1 setosa 5.006 3.428
2 versicolor 5.936 2.770
3 virginica 6.588 2.974
> aggregate(cbind(Sepal.Length,Sepal.Width)~Species,iris,mean)
Species Sepal.Length Sepal.Width
1 setosa 5.006 3.428
2 versicolor 5.936 2.770
3 virginica 6.588 2.974
> a<-c(1,3,2,5,4)
#벡터의 순서 인덱스 표시
> order(a)
[1] 1 3 2 5 4
#순서인덱스로 벡터에서 값 추출
> a[order(a)]
[1] 1 2 3 4 5
#iris데이터를 1차 Sepal.Width , 2차 Sepal.Length 정렬 후 head로 6개만 표시
> head(iris[order(iris$Sepal.Width,iris$Sepal.Length),])
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
61 5.0 2.0 3.5 1.0 versicolor
63 6.0 2.2 4.0 1.0 versicolor
120 6.0 2.2 5.0 1.5 virginica
69 6.2 2.2 4.5 1.5 versicolor
42 4.5 2.3 1.3 0.3 setosa
94 5.0 2.3 3.3 1.0 versicolor
> head(orderBy(~Sepal.Width+Sepal.Length,iris))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
61 5.0 2.0 3.5 1.0 versicolor
63 6.0 2.2 4.0 1.0 versicolor
120 6.0 2.2 5.0 1.5 virginica
69 6.2 2.2 4.5 1.5 versicolor
42 4.5 2.3 1.3 0.3 setosa
94 5.0 2.3 3.3 1.0 versicolor
#iris데이터를 1차 Species, 2차 Sepal.Width , 3차 Sepal.Length 정렬 후 head로 6개만 표시
> head(iris[order(iris$Species, iris$Sepal.Width,iris$Sepal.Length),])
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
42 4.5 2.3 1.3 0.3 setosa
9 4.4 2.9 1.4 0.2 setosa
14 4.3 3.0 1.1 0.1 setosa
39 4.4 3.0 1.3 0.2 setosa
13 4.8 3.0 1.4 0.1 setosa
46 4.8 3.0 1.4 0.3 setosa
> head(orderBy(~Species+Sepal.Width+Sepal.Length,iris))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
42 4.5 2.3 1.3 0.3 setosa
9 4.4 2.9 1.4 0.2 setosa
14 4.3 3.0 1.1 0.1 setosa
39 4.4 3.0 1.3 0.2 setosa
13 4.8 3.0 1.4 0.1 setosa
46 4.8 3.0 1.4 0.3 setosa
#표본추출 1:5의 범위에서 3개를 비복원추출로 가중치를 4가 가장 많이 나오게 순서대로 준 경우
#반복시행(독립중복시행) 결과
> sample(1:5,3, replace = FALSE, prob = c(1,1,1,10,1))
[1] 4 2 3
> sample(1:5,3, replace = FALSE, prob = c(1,1,1,10,1))
[1] 2 1 4
> sample(1:5,3, replace = FALSE, prob = c(1,1,1,10,1))
[1] 4 5 2
> sample(1:5,3, replace = FALSE, prob = c(1,1,1,10,1))
[1] 4 2 3
#Species를 기준으로 0.1(10%)를 iris 데이터에서 표본추출
> sampleBy(~Species,frac = 0.1,data = iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
setosa.11 5.4 3.7 1.5 0.2 setosa
setosa.12 4.8 3.4 1.6 0.2 setosa
setosa.28 5.2 3.5 1.5 0.2 setosa
setosa.31 4.8 3.1 1.6 0.2 setosa
setosa.35 4.9 3.1 1.5 0.2 setosa
versicolor.53 6.9 3.1 4.9 1.5 versicolor
versicolor.55 6.5 2.8 4.6 1.5 versicolor
versicolor.79 6.0 2.9 4.5 1.5 versicolor
versicolor.83 5.8 2.7 3.9 1.2 versicolor
versicolor.94 5.0 2.3 3.3 1.0 versicolor
virginica.113 6.8 3.0 5.5 2.1 virginica
virginica.117 6.5 3.0 5.5 1.8 virginica
virginica.120 6.0 2.2 5.0 1.5 virginica
virginica.122 5.6 2.8 4.9 2.0 virginica
virginica.147 6.3 2.5 5.0 1.9 virginica
반응형
'statistics > R' 카테고리의 다른 글
R data divide, merge, extract ( 데이터 분할, 병합, 부분추출 ) (0) | 2018.11.28 |
---|---|
R lottery number generation exercise ( 로또 번호 생성) (0) | 2018.11.26 |
R apply data manipulation ( 데이터 처리 ) (0) | 2018.11.26 |
R file input, output ( 파일 입출력 ) (0) | 2018.11.24 |
R user defined function, variable scope ( 사용자 정의 함수와 변수의 스코프 ) (0) | 2018.11.23 |
Comments