SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
[원] 통계상담 2014-11
A.1 R 데이터 다루기
분할, 병합, 집계, 선별, ...
허 명 회 (고려대 교수, 통계학)
2014.03.25
응 용 데 이 터 분 석 : R의 활용
[원] 통계상담 2014-12
개 요
시각화와 모형화를 위한 데이터 정형화
1. 분할, 변수선택
2. 병합
3. 집계⋅요약
4. 데이터 선별
[원] 통계상담 2014-13
분할: split
subset 함수를 활용하여 분할하기
예제: lalonde {Matching}
445 observations on 12 variables.
age educ black hisp married nodegr re74 re75 re78 u74 u75 treat
treat=1 그룹과 treat=0 그룹으로 나누기
> data(lalonde)
> lalonde.1 <- split(lalonde, treat==1)
> lalonde.2 <- split(lalonde, treat==0)
> str(lalonde.1)
> str(lalonde.2)
[원] 통계상담 2014-14
분할: split
split 함수로 분할하기
> grp <- factor(lalonde$treat)
> levels(grp) <- c("control","treatment")
> lalonde.s <- split(lalonde,grp)
> names(lalonde.s)
[1] "control" "treatment"
> str(lalonde.s$treatment)
> str(lalonde.s$control)
* 그룹화 변수가 3개 이상의 값을 취하는 경우 효율적
[원] 통계상담 2014-15
변수선택: subset & select
데이터세트에 일련번호 넣고 일부 변수를 선택하기
> set.seed(123); id <- sample(1:nrow(lalonde))
> lalonde.id <- cbind(id,lalonde)
> str(lalonde.id)
> lalonde.id.demo <- subset(lalonde.id,
select=c(id,age,educ,black,hisp,married,nodegr,treat))
> lalonde.id.field <- subset(lalonde.id, select=c(id,re74,re75,re78,u74,u75))
> str(lalonde.id.demo)
> str(lalonde.id.field)
[원] 통계상담 2014-16
변수선택: subset & select
데이터세트를 일련번호로 순서정렬하기
# 정렬기준이 1개인 경우: order 함수의 활용
> lalonde.id.demo.1 <- lalonde.id.demo[order(lalonde.id.demo$id),]
> library(reshape)
# 정렬기준이 1개인 경우: 다른 방법
> lalonde.id.demo.2 <- sort_df(lalonde.id.demo, vars="id")
# 정렬기준이 2개인 경우
> lalonde.id.demo.3 <- sort_df(lalonde.id.demo, vars=c("educ","age"))
[원] 통계상담 2014-17
병합: merge
데이터세트의 “위⋅아래” 병합
# lalonde.1: 185 cases with treat=1
# lalonde.2: 260 cases with treat=0
> lalonde.12 <- rbind(lalonde.1,lalonde.2)
> str(lalonde.12)
[원] 통계상담 2014-18
병합: merge
데이터세트의 “좌⋅우” 병합: 케이스들이 같은 순서로 배열되어 있는 경우
# lalonde.id.demo: 445 cases with “id” and 8 demo variables
# lalonde.id.field: 445 cases with “id” and 6 field variables
> lalonde.id.demo.field <- cbind(lalonde.id.demo,lalonde.id.field[,-1])
> str(lalonde.id.demo.field)
데이터세트의 “좌⋅우” 병합: 케이스들이 다른 순서로 배열되어 있는 경우
# lalonde.id.demo.1: 445 cases with “id” and 8 demo variables
# lalonde.id.field: 445 cases with “id” and 6 field variables
> lalonde.merged <- merge(lalonde.id.demo.1, lalonde.id.field, by="id")
> str(lalonde.merged)
[원] 통계상담 2014-19
집계⋅요약: aggregation, summary
aggregate( ) 함수의 활용 1
> lalonde.treat <- aggregate(lalonde, by=list(lalonde$treat), mean)
데이터 분할변수 적용함수
> lalonde.treat[,c("treat","re74","re75","re78","u74","u75")] : 결과
treat re74 re75 re78 u74 u75
1 0 2107.027 1266.909 4554.802 0.7500000 0.6846154
2 1 2095.574 1532.056 6349.145 0.7081081 0.6000000
[원] 통계상담 2014-110
집계⋅요약: aggregation, summary
aggregate( ) 함수의 활용 2: 분할변수가 2개 이상인 경우
> lalonde.treat.race <- aggregate(lalonde,
by=list(lalonde$treat, lalonde$black, lalonde$hisp), mean)
> lalonde.treat.race[, c("treat","black","hisp","re74","re75","re78")] : 결과
treat black hisp re74 re75 re78
1 0 0 0 3791.632 2294.608 7286.566
2 1 0 0 1305.037 1246.532 7720.994
3 0 1 0 2086.477 1157.948 4107.653
4 1 1 0 2155.013 1490.722 6136.323
5 0 0 1 1242.023 1479.619 6329.699
6 1 0 1 2546.221 2585.455 7122.514
[원] 통계상담 2014-111
집계⋅요약: aggregation, summary
apply( ) 함수의 활용: 변수에 적용
> lalonde.summary <- apply(lalonde[,7:11], 2, summary)
데이터 열 적용함수
> lalonde.summary
re74 re75 re78 u74 u75 : 결과
Min. 0.0 0 0 0.0000 0.0000
1st Qu. 0.0 0 0 0.0000 0.0000
Median 0.0 0 3702 1.0000 1.0000
Mean 2102.0 1377 5301 0.7326 0.6494
3rd Qu. 824.4 1221 8125 1.0000 1.0000
Max. 39570.0 25140 60310 1.0000 1.0000
[원] 통계상담 2014-112
데이터 선별: data screening
> lalonde.age50 <- lalonde[lalonde$age>=50,]
선별조건
> str(lalonde.age50)
> lalonde.age50[,1:6] : 결과
age educ black hisp married nodegr
263 55 3 1 0 0 1
270 50 10 0 1 0 1
306 54 11 1 0 0 1
> lalondde.black.treat <- lalonde[lalonde$black==1 & lalonde$treat==1,]
선별조건 1 선별조건 2
[원] 통계상담 2014-113
고급 기법: advanced techniques
plyr
reshape
data.table
[원] 통계상담 2014-114
정리⋅요약
Numerous issues on data handling...

Contenu connexe

En vedette

Data visualization using r pt 20140316
Data visualization using r pt 20140316Data visualization using r pt 20140316
Data visualization using r pt 20140316Myung-Hoe Huh
 
22 r data manipulation 2 pt 20140404
22 r data manipulation 2 pt 2014040422 r data manipulation 2 pt 20140404
22 r data manipulation 2 pt 20140404Myung-Hoe Huh
 
"빅" 데이터의 분석적 시각화
"빅" 데이터의 분석적 시각화"빅" 데이터의 분석적 시각화
"빅" 데이터의 분석적 시각화Myung-Hoe Huh
 
데이터 사이언티스트 키노트 Pt 20141008
데이터 사이언티스트 키노트 Pt 20141008데이터 사이언티스트 키노트 Pt 20141008
데이터 사이언티스트 키노트 Pt 20141008Myung-Hoe Huh
 
기초 확률 관련
기초 확률 관련기초 확률 관련
기초 확률 관련Yoonwhan Lee
 
Comic elemento didactico i jose rovira febrero camon2013
Comic elemento didactico i jose rovira  febrero camon2013Comic elemento didactico i jose rovira  febrero camon2013
Comic elemento didactico i jose rovira febrero camon2013José Rovira Collado
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your BusinessBarry Feldman
 

En vedette (7)

Data visualization using r pt 20140316
Data visualization using r pt 20140316Data visualization using r pt 20140316
Data visualization using r pt 20140316
 
22 r data manipulation 2 pt 20140404
22 r data manipulation 2 pt 2014040422 r data manipulation 2 pt 20140404
22 r data manipulation 2 pt 20140404
 
"빅" 데이터의 분석적 시각화
"빅" 데이터의 분석적 시각화"빅" 데이터의 분석적 시각화
"빅" 데이터의 분석적 시각화
 
데이터 사이언티스트 키노트 Pt 20141008
데이터 사이언티스트 키노트 Pt 20141008데이터 사이언티스트 키노트 Pt 20141008
데이터 사이언티스트 키노트 Pt 20141008
 
기초 확률 관련
기초 확률 관련기초 확률 관련
기초 확률 관련
 
Comic elemento didactico i jose rovira febrero camon2013
Comic elemento didactico i jose rovira  febrero camon2013Comic elemento didactico i jose rovira  febrero camon2013
Comic elemento didactico i jose rovira febrero camon2013
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
 

Dernier

TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)yonseilibrary
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.ultrasuperrok
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다ultrasuperrok
 
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료Seongwon Kim
 
바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111a01091282057
 
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.ultrasuperrok
 

Dernier (6)

TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
 
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
 
바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111
 
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
 

21 r data manipulation 1 pt 20140325

  • 1. [원] 통계상담 2014-11 A.1 R 데이터 다루기 분할, 병합, 집계, 선별, ... 허 명 회 (고려대 교수, 통계학) 2014.03.25 응 용 데 이 터 분 석 : R의 활용
  • 2. [원] 통계상담 2014-12 개 요 시각화와 모형화를 위한 데이터 정형화 1. 분할, 변수선택 2. 병합 3. 집계⋅요약 4. 데이터 선별
  • 3. [원] 통계상담 2014-13 분할: split subset 함수를 활용하여 분할하기 예제: lalonde {Matching} 445 observations on 12 variables. age educ black hisp married nodegr re74 re75 re78 u74 u75 treat treat=1 그룹과 treat=0 그룹으로 나누기 > data(lalonde) > lalonde.1 <- split(lalonde, treat==1) > lalonde.2 <- split(lalonde, treat==0) > str(lalonde.1) > str(lalonde.2)
  • 4. [원] 통계상담 2014-14 분할: split split 함수로 분할하기 > grp <- factor(lalonde$treat) > levels(grp) <- c("control","treatment") > lalonde.s <- split(lalonde,grp) > names(lalonde.s) [1] "control" "treatment" > str(lalonde.s$treatment) > str(lalonde.s$control) * 그룹화 변수가 3개 이상의 값을 취하는 경우 효율적
  • 5. [원] 통계상담 2014-15 변수선택: subset & select 데이터세트에 일련번호 넣고 일부 변수를 선택하기 > set.seed(123); id <- sample(1:nrow(lalonde)) > lalonde.id <- cbind(id,lalonde) > str(lalonde.id) > lalonde.id.demo <- subset(lalonde.id, select=c(id,age,educ,black,hisp,married,nodegr,treat)) > lalonde.id.field <- subset(lalonde.id, select=c(id,re74,re75,re78,u74,u75)) > str(lalonde.id.demo) > str(lalonde.id.field)
  • 6. [원] 통계상담 2014-16 변수선택: subset & select 데이터세트를 일련번호로 순서정렬하기 # 정렬기준이 1개인 경우: order 함수의 활용 > lalonde.id.demo.1 <- lalonde.id.demo[order(lalonde.id.demo$id),] > library(reshape) # 정렬기준이 1개인 경우: 다른 방법 > lalonde.id.demo.2 <- sort_df(lalonde.id.demo, vars="id") # 정렬기준이 2개인 경우 > lalonde.id.demo.3 <- sort_df(lalonde.id.demo, vars=c("educ","age"))
  • 7. [원] 통계상담 2014-17 병합: merge 데이터세트의 “위⋅아래” 병합 # lalonde.1: 185 cases with treat=1 # lalonde.2: 260 cases with treat=0 > lalonde.12 <- rbind(lalonde.1,lalonde.2) > str(lalonde.12)
  • 8. [원] 통계상담 2014-18 병합: merge 데이터세트의 “좌⋅우” 병합: 케이스들이 같은 순서로 배열되어 있는 경우 # lalonde.id.demo: 445 cases with “id” and 8 demo variables # lalonde.id.field: 445 cases with “id” and 6 field variables > lalonde.id.demo.field <- cbind(lalonde.id.demo,lalonde.id.field[,-1]) > str(lalonde.id.demo.field) 데이터세트의 “좌⋅우” 병합: 케이스들이 다른 순서로 배열되어 있는 경우 # lalonde.id.demo.1: 445 cases with “id” and 8 demo variables # lalonde.id.field: 445 cases with “id” and 6 field variables > lalonde.merged <- merge(lalonde.id.demo.1, lalonde.id.field, by="id") > str(lalonde.merged)
  • 9. [원] 통계상담 2014-19 집계⋅요약: aggregation, summary aggregate( ) 함수의 활용 1 > lalonde.treat <- aggregate(lalonde, by=list(lalonde$treat), mean) 데이터 분할변수 적용함수 > lalonde.treat[,c("treat","re74","re75","re78","u74","u75")] : 결과 treat re74 re75 re78 u74 u75 1 0 2107.027 1266.909 4554.802 0.7500000 0.6846154 2 1 2095.574 1532.056 6349.145 0.7081081 0.6000000
  • 10. [원] 통계상담 2014-110 집계⋅요약: aggregation, summary aggregate( ) 함수의 활용 2: 분할변수가 2개 이상인 경우 > lalonde.treat.race <- aggregate(lalonde, by=list(lalonde$treat, lalonde$black, lalonde$hisp), mean) > lalonde.treat.race[, c("treat","black","hisp","re74","re75","re78")] : 결과 treat black hisp re74 re75 re78 1 0 0 0 3791.632 2294.608 7286.566 2 1 0 0 1305.037 1246.532 7720.994 3 0 1 0 2086.477 1157.948 4107.653 4 1 1 0 2155.013 1490.722 6136.323 5 0 0 1 1242.023 1479.619 6329.699 6 1 0 1 2546.221 2585.455 7122.514
  • 11. [원] 통계상담 2014-111 집계⋅요약: aggregation, summary apply( ) 함수의 활용: 변수에 적용 > lalonde.summary <- apply(lalonde[,7:11], 2, summary) 데이터 열 적용함수 > lalonde.summary re74 re75 re78 u74 u75 : 결과 Min. 0.0 0 0 0.0000 0.0000 1st Qu. 0.0 0 0 0.0000 0.0000 Median 0.0 0 3702 1.0000 1.0000 Mean 2102.0 1377 5301 0.7326 0.6494 3rd Qu. 824.4 1221 8125 1.0000 1.0000 Max. 39570.0 25140 60310 1.0000 1.0000
  • 12. [원] 통계상담 2014-112 데이터 선별: data screening > lalonde.age50 <- lalonde[lalonde$age>=50,] 선별조건 > str(lalonde.age50) > lalonde.age50[,1:6] : 결과 age educ black hisp married nodegr 263 55 3 1 0 0 1 270 50 10 0 1 0 1 306 54 11 1 0 0 1 > lalondde.black.treat <- lalonde[lalonde$black==1 & lalonde$treat==1,] 선별조건 1 선별조건 2
  • 13. [원] 통계상담 2014-113 고급 기법: advanced techniques plyr reshape data.table