R Conqueror
2016년 8월 22일 월요일
2015년 1월 10일 토요일
subset() ; 데이터셋트에서 조건에 맞는 내용을 조회
subset()
Descrition: Return subsets of vectors, matrices or data frames which meet conditions.
Usages subset(dataframe, select, subset)
- dataframe : 조회할 데이터 세트
- select : 열이름
- subset : 조건식
ex1) iris 데이터의 Species 열에서 Petal.Length > 1.7 데이터를 조회하라
> subset(iris, select = Species, subset=(Petal.Length>1.7))
ex2) iris 데이터에서 Sepal.Width > 3 이고 Petal.Width == 0.2인 Sepal.Length, Petal.Length, Species 열을 조회하라
> subset(iris, select = c(Sepal.Length, Petal.Length, Species), subset=(c(Sepal.Width > 1.7 & Petal.Width == 0 ))
Descrition: Return subsets of vectors, matrices or data frames which meet conditions.
Usages subset(dataframe, select, subset)
- dataframe : 조회할 데이터 세트
- select : 열이름
- subset : 조건식
ex1) iris 데이터의 Species 열에서 Petal.Length > 1.7 데이터를 조회하라
> subset(iris, select = Species, subset=(Petal.Length>1.7))
ex2) iris 데이터에서 Sepal.Width > 3 이고 Petal.Width == 0.2인 Sepal.Length, Petal.Length, Species 열을 조회하라
> subset(iris, select = c(Sepal.Length, Petal.Length, Species), subset=(c(Sepal.Width > 1.7 & Petal.Width == 0 ))
2014년 12월 23일 화요일
attach() 오브젝트이름을 기억시키는 함수
attach()
Description : The database is attached to the R search path. This means that the database is searched by R when evaluating a variable, so objects in the database can be accessed by simply giving their names.
attach(data셋)을 하면 data에 있는 오브젝트(열값, 속성)이름만으로 값 출력가능
usedcars 데이터의 model값을 접근할려면,
> usedcars$model
로 해야하지만,
> attach(usedcars)를 하면
usedcars에 있는 오브젝트 이름만으로 접근가능
> model
attach(data셋)을 하면 data에 있는 오브젝트(열값, 속성)이름만으로 값 출력가능
usedcars 데이터의 model값을 접근할려면,
> usedcars$model
로 해야하지만,
> attach(usedcars)를 하면
usedcars에 있는 오브젝트 이름만으로 접근가능
> model
> head(usedcars,10) year model price mileage color transmission 1 2011 SEL 21992 7413 Yellow AUTO 2 2011 SEL 20995 10926 Gray AUTO 3 2011 SEL 19995 7351 Silver AUTO 4 2011 SEL 17809 11613 Gray AUTO 5 2012 SE 17500 8367 White AUTO 6 2010 SEL 17495 25125 Silver AUTO 7 2011 SEL 17000 27393 Blue AUTO 8 2010 SEL 16995 21026 Silver AUTO 9 2011 SES 16995 32655 Silver AUTO 10 2010 SES 16995 36116 Silver AUTO > head(usedcars$model, 10) [1] "SEL" "SEL" "SEL" "SEL" "SE" "SEL" "SEL" "SEL" "SES" "SES" > attach(usedcars) > head(model, 10) [1] "SEL" "SEL" "SEL" "SEL" "SE" "SEL" "SEL" "SEL" "SES" "SES"
head(usedcars$model,10) 과 head(model,10)은 출력값은 동일
2014년 12월 3일 수요일
구글 스프레드시트로 HTML Parsing 빠르게 하기
=IMPORTHTML("http://dart.fss.or.kr/dsac001/mainY.do", "table", 1)
1. 긁어오고자 하는 웹사이트를 열어 URL 주소를 복사한 후,
2. 구글 드라이브에 로그인해서 만들기 – 스프레드시트를 연 다음,
3. 데이터를 삽입하기 원하는 위치의 가장 왼쪽 위 셀에서 다음과 같은 함수를 입력하면
=ImportHtml("URL", "쿼리", 색인)
- url : 대상 주소
- 퀘리 : table, list
- 색인 : 해당 테이블이 몇번째인가
2014년 12월 1일 월요일
비정형 데이터로 다양한 그래프 그리기
## 제주도 여행코스를 검색하여 분석후 그래프로 표시하기 # setwd("C:\\Users\\user\\Desktop\\R까기") getwd() library(KoNLP) library(wordcloud) library(RColorBrewer) useSejongDic() mergeUserDic(data.frame("신비의도로", "ncn")) # 단어 추가 mergeUserDic(data.frame("주상절리", "ncn")) # 단어 추가 # 1. read txt txt = readLines("data/Part_1/LEVEL_1/jeju.txt") head(txt) typeof(txt) # 2. extract nuons txt_nouns = sapply(txt, extractNoun, USE.NAMES=F) typeof(txt_nouns) head(txt_nouns) # 3. unlist for filtering txt_nouns_unlist = unlist(txt_nouns) # 4. 두 글자 이상되는것만 필터링 place = Filter(function(x){nchar(x) >=2},txt_nouns_unlist) typeof(place) head(place,60) # 5. 필요없는 단어 제거 place = gsub("무난","", place) place = gsub("전국","", place) place = gsub("렌트카","", place) place = gsub("\\d+","", place) place = gsub("40","", place) place = gsub("입장료","", place) place = gsub("관광지","", place) place = gsub("대략적","", place) place = gsub("어디","", place) place = gsub("여행","", place) place = gsub("숙소","", place) place = gsub("도움","", place) place = gsub("연휴","", place) place = gsub("할인","", place) place = gsub("없구요","", place) place = gsub("하시","", place) place = gsub("6월4일부터","", place) place = gsub("되버려서","", place) place = gsub("가격","", place) place = gsub("질문","", place) place = gsub("모바일할인쿠폰을","", place) place = gsub("모바일쿠폰을","", place) place = gsub("일정","", place) place = gsub("예약","", place) place = gsub("제주","", place) place = gsub("공항","", place) place = gsub("해안","", place) place = gsub("이용","", place) place = gsub("경우","", place) place = gsub("전망","", place) place = gsub("코스","", place) place = gsub("시간","", place) place = gsub("추천","", place) place = gsub("일출","", place) place = gsub("드라이브","", place) place = gsub("도착","", place) place = gsub("사진","", place) place = gsub("가능","", place) place = gsub("박물관","", place) place = gsub("바다","", place) place = gsub("경유","", place) place = gsub("소요","", place) place = gsub("하루","", place) place = gsub("하게","", place) place = gsub("바다","", place) place = gsub("녹차","", place) place = gsub("위치","", place) place = gsub("출발","", place) place = gsub("다양","", place) place = gsub("랜드","", place) place = gsub("바다","", place) # 6. save file write(unlist(place), "jeju_2.txt") # 7. read file as table rev = read.table("jeju_2.txt") # list type typeof(rev) nrow(rev) # 8. table 형태로 변환해서 wordcount라는 변수에 할당 wordcount = table(rev) head(sort(wordcount, decreasing=T),30) ## 가장 언급 빈도수가 많은순으로 정렬 # 9. pie형으로 보이기 상위 10개 a = head(sort(wordcount, decreasing=T),10) windows() pie(a) savePlot("jeju_2.jpg",type="jpg") # save결과
# 10. 색상변경 color = rainbow(10) pie(a, col=color,radius=1) savePlot("jeju_3.jpg",type="jpg") # save결과
# 11. 수치값 넣기 pct = round(a/sum(a)*100,1) names(a) typeof(a) lab = paste(names(a),"\n",pct,"%") lab pie(a, col=color,radius=1, labels=lab, main="제주도 추천 코스") par(new=T) ## 겹치기? pie(a, radius=0.6, labels=NA, border=NA, col="white") savePlot("jeju_4.jpg",type="jpg") # save결과
# 12. bar graph bar = head(sort(wordcount, decreasing=T),10) barplot(bar, main="제주도 추천 코스 TOP 10", col=color,space=0.8, ylim=c(0,25),cex.name=0.7,las=1 ) # space : 바 간격, ylim : y축 값, cex.name : x축 사이즈, las : 수직/평형 savePlot("jeju_5.jpg",type="jpg") # save결과
##13. 수치넣기 bp = barplot(bar, main="제주도 추천 코스 TOP 10", col=color,space=0.8, ylim=c(0,25),cex.name=0.7,las=1 ) pct_bar = round(bar/sum(bar)*100,1) pct_bar barplot(bar, main="제주도 추천 코스 TOP 10", col=color,space=0.8, ylim=c(0,25),cex.name=0.7,las=1) text(x=bp, y=bar*1.05, labels=paste("(",pct_bar,"%",")"), col="black", cex=0.7) text(x=bp, y=bar*0.95, labels=paste(bar,"건"), col="black", cex=0.7) savePlot("jeju_6.jpg",type="jpg") # save결과
bp_h = barplot(bar, main="제주도 추천 코스 TOP 10", col=color,space=0.8, xlim=c(0,25),cex.name=0.7,las=1,horiz=T) text(x=bar*1.15, y=bp_h, labels=paste("(",pct_bar,"%",")"), col="black", cex=0.7) text(x=bar*0.9, y=bp_h, labels=paste(bar,"건"), col="black", cex=0.7) savePlot("jeju_7.jpg",type="jpg") # save결과
라벨:
R programming
2014년 11월 24일 월요일
R round() 반올림 함수
round(x, digits = 0)
x : a numeric vector(실수값)
digits : integer indicating the number of decimal places(round), 반올림된 자리수
* digits = 1 : 소수점 아래 자리
* digits = -1 : 소수점 윗 자리
* digits = 0 : 소수점(원점) 자리
x : a numeric vector(실수값)
digits : integer indicating the number of decimal places(round), 반올림된 자리수
* digits = 1 : 소수점 아래 자리
* digits = -1 : 소수점 윗 자리
* digits = 0 : 소수점(원점) 자리
> round(123.456, digits = 1) # 소숫점 아래 첫째자리 [123.5] > round(123.456, digits = 0) # 소숫점(원점) 자리 [1] 123 > round(123.456, digits= -1) # 소숫점 윗 첫째자리 [1] 120ex) 100 - 900(단위:100)사이 랜덤 숫자 5개 출력
> round(runif(5, min=100,max=900), digits=-2) # digits = -2 : 둘째 자리까지 표현 [1] 700 500 700 400 300
라벨:
R 문법
,
R programming
R apply() 함수
apply() 함수는 복수의 오브젝트에 적용하여 얻은 결과를 벡터나 행렬, 리스트로 반환한다.
apply() 함수를 사용하면 반복문으로 처리해야 할것을 더욱 간결하게 처리할수 있다.
apply() 함수를 사용하면 반복문으로 처리해야 할것을 더욱 간결하게 처리할수 있다.
함수 | 기능 |
---|---|
apply(X, MARGIN, 함수,…) | MARGIN이 1이면 행, MARGIN이 2이면 열에, MARGIN=c(1,2)이면 각 요소에 함수를 적용 |
lapply(X, 함수,…) | 벡터, 데이터 프레임, 리스트에 대해 함수를 적용하고 결과를 리스트로 반환 |
sapply(X, 함수, ,…) | 결과를 벡터나 행렬로 반환 |
tapply(X, INDEX, 함수,…) | 그룹화된 변수에 대해서 그룹별로 함수를 적용하고 교차표를 반환 |
mapply(함수,…) | sapply()의 다변량 버전 |
sweep(X, MARGIN, 통계량, FUN=”-”,…) | 벡터와 행렬, 배열의 MARGIN으로 지정한 차원에서 통계량을 뺌(FUN=”+”이면 더함) |
피드 구독하기:
글
(
Atom
)