##14.12.29 월요일 전산실습
#교수님 말씀
#데이터 긁어오기 : 컴공
#데이터 헨들링, 설문지, 분석, 보고서 작성 등 : 통계학과
#>> 통계학과 학생이 SQL 능력이 있으면 실력 향상, 취업시 좋은 조건을 갖추는 것?
#시험문제는 변수변환 중요
#기존의 변수를 이용해 새로운 변수를 만들어서(이 것도 데이터 헨들링) 계산, 분석!
# 변수 병합, 새로운 변수 만들기 ( 금융권에서 중요, 금융권은 주로 sas사용)
#p.82 변수변환(Recoding) : 숫자변수를 범주형(문자변수)로 바꾸는 것
# ex) 키(숫자변수)를 구간으로 나누는것
# 변수 변환 방법 4가지 책에 나와있음. 시험에선 어떤 것이든 아무거나 사용해도 가능.
##실습내용##
#월드95파일로 p.83의 변수변환하기, 3가지 방법사용
world95<-read.xlsx("D:/R/world95_R2.xlsx",1, header=T)
x<-world95$lifeexpf
#factor 집단 구분변수, 요인으로 만들기 (수치자료를 범주화!)
#p.83 밑에 트루,펄스 논리 연산 읽어보기
cat.lifeexpf1<-(x>=0)+(x>70)+(x>80)
cat.lifeexpf1<-factor(cat.lifeexpf,labels=c("하","중","상"))
cat.lifeexpf1
cat.lifeexpf2<-(x<=90)+(x<=80)+(x<70)
cat.lifeexpf2<-factor(cat.lifeexpf,labels=c("상","중","하"))
cat.lifeexpf2
cat.lifeexpf3<-1*(x>=0 & x<70)+2*(x>=70 & x<=80)+3*(x>80)
cat.lifeexpf3<-factor(cat.lifeexpf,labels=c("하","중","상"))
cat.lifeexpf3
summary(cat.lifeexpf1)
하 중 상
39 60 10
summary(cat.lifeexpf2)
상 중 하
39 60 10
summary(cat.lifeexpf3)
하 중 상
39 60 10
#새로 만든 상중하 변수를 world95 옆에 붙이기 ( cbind 이용)
world95_11<-cbind(world95,cat.lifeexpf3)
#3.1.6 결측값 p.84
summary(world95_11$lifeexpf)
Min. 1st Qu. Median Mean 3rd Qu. Max.
43.00 67.00 74.00 70.16 78.00 82.00
is.na(world95_11$lifeexpf)
is.na(world95_11$calories)
#결측값을 . 으로 설정하는 옵션 추가해서 다시 부르기 (p.49)
#xlsx라서 na.strings 옵션 적용이 안됨? 그래서 csv로 바꿔서 저장하고 불러서 해보기?
#p.86 연산자 (산비논, 산술 비교 논리 연산자)
# %in% 연산자는 주어진 벡터에 특정 값이 포함되어 있는지를 확인할 때 유용
# 객체의 값과 동일하면 TRUE, 아니면 FALSE
world95_100<-read.csv("D:/R/world95.csv", header=TRUE,na.strings=".")
world95_100
world95_100$calories
[1] NA 3113 NA 3216 3495 NA NA 2021 NA NA NA 1916 NA 2375
[15] 2751 NA 2288 1932 2166 2217 3482 2036 2581 2639 2598 2808 NA NA
[29] 3632 3628 2359 2531 3336 2317 NA 1667 3253 3465 2383 NA NA 3443
[43] 3825 2235 2013 2247 NA 3644 NA 2229 2750 3181 2887 3778 NA 3504
[57] 2956 2634 2163 3195 NA NA 2382 3324 NA 2774 3052 NA NA 3151
[71] 3362 2265 2312 3326 NA NA 2539 2757 2186 2375 NA NA 3155 NA
[85] 1971 NA 2874 2369 3198 1906 NA 3572 2960 3562 NA NA 2206 2316
[99] 3236 NA 3149 3671 2153 NA 2653 NA 2582 2233 2077
summary(world95_100$calories)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
1667 2256 2653 2754 3226 3825 34
mean(world95_100$calories)
[1] NA
is.na(world95_100$calories)
[1] TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE TRUE TRUE TRUE FALSE
[13] TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[25] FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[37] FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[49] TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
[61] TRUE TRUE FALSE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE
[73] FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE
[85] FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE
[97] FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE
[109] FALSE
mean(world95_100$calories, na.rm=TRUE) #결측값 제외하는 옵션 na.rm=TRUE
[1] 2753.827
## p.92 3.3 데이터 프레임 다루기 >> 시험!
# transform() 함수!!
world95<-read.xlsx("D:/R/world95_R2.xlsx",1, header=T)
#world95 다시부르기
mean_lifeexp<-(world95$lifeexpm+world95$lifeexpm)/2
mean_lifeexp
world95<-transform(world95, mean_lifeexp=(world95$lifeexpm+world95$lifeexpm)/2)
#데이터프레임 끝에 새로운 변수를 추가(남녀 평균수명)
world95$mean_lifeexp=(world95$lifeexpm+world95$lifeexpm)/2
#데이터프레임 끝에 새로운 변수를 추가
world95$type[world95$mean_lifeexp>65]="상"
world95$type[world95$mean_lifeexp<=65]="하"
#65기준으로 상하로 나누어서 맨끝에 type이라는 변수를 추가
#p.94 데이터 변환후 factor로 바꾸기? 공부
#p.94 within 연습
world95<-within(world95,{
type<-character(0)
type[world95$mean_lifeexp<=65]="하"
type[world95$mean_lifeexp>65]="상"
type=factor(type, level=c("하","상"))
})
#world95.csv csv파일!
'프로그래밍, 통계학 > R(전산실습)' 카테고리의 다른 글
2014.12.31.수요일 전산실습 (0) | 2014.12.31 |
---|---|
2014.12.30.화요일 (0) | 2014.12.30 |
14.12.26 금요일 전산실습 (0) | 2014.12.26 |
2014.12.24.수요일 전산실습 (0) | 2014.12.24 |
2014.12.23(결석수업)자료 (0) | 2014.12.24 |