글

라벨이 R인 게시물 표시

[R_bigdata] R을 활용한 데이터베이스 저장

#day04_06_database.R #database란 체계적으로 데이터를 관리할 수 있는 프로그램(어플리케이션) #파일로 데이터를 관리하면 날짜별, 데이터별로 관리가 힘들기 때문에 데이터가 많은 경우 데이터 베이스를 통해 관리한다. #데이터 베이스에는 oracle, mssql, mysql 등이 있다. install.packages('RMySQL') library(RMySQL) #데이터베이스 접속 conn <- dbConnect(MySQL(),host='192.168.6.254',dbname ='mydb',user='root',pass='1234') conn #테이블에서 데이터가 존재하는지 검색 #q<-'SELECT*FROM 테이블 이름' q<-'SELECT*FROM train' dbGetQuery(conn,q) y<-c(2000,2001,2002) t<-c(5000,6000,7000) df1<-data.frame(y,t) df1 colnames(df1)<-c('_year','_total') df1 #데이터베이스 데이터 입력 #'train' = 시트명, df1 = 데이터, row.names=행 이름, append=데이터 추가 dbWriteTable(conn,'train',df1,row.names=F,append=T) #다시 테이블 조회하기 dbGetQuery(conn,q) #데이터베이스로 부터 데이터 얻어와 시각화하기 read_train<-dbGetQuery(conn,q) read_train barplot(read_train$'_total',names.arg = read_train$`_year`) table(read_train)

[R_bigdata] R을 활용한 시각화 (ggplot)

#day04_05_visual.R #ggplot install.packages('ggplot2') library(ggplot2) library(dplyr) library(tidyverse) #내장 데이터 사용 diamonds #ggplot은 데이터와 미학적 요소로 나뉘어 그려진다. #ggplot() 은 데이터를 정의 #aes(esthetics): 화면에 그려지는 방식 ggplot(diamonds,aes(x=color)) + geom_bar() ggplot(diamonds,aes(x=clarity, y=price)) + geom_bar(stat='identity') #보이도록 하기 위해서 (visible) #그룹화 해서 평균 가격을 만들어서 시각화 diamonds %>% group_by(clarity) %>% summarise(mean_price=mean(price)) %>% ggplot(aes(x=clarity,y=mean_price)) + geom_bar(stat='identity') #group_by는 매개변수에 전달된  컬럼명으로 요약하는 역할을 한다. summarise()는 매개변수에 전달된 계산방법에 따라 group_by()의 컬럼그룹을 요약한다. 여기서는 clarity로 카테고리화하고 카테고리별 price를 mean()을 통해 구해내고 있다. #산점도를 이용, 다이아몬드 크기에 따른 가격을 그려보기 diamonds %>% ggplot(aes(x=carat, y =price, color=clarity))+geom_point()+geom_smooth() #geom_point : 산점도 #ggplot 의 상속 #ggplot에서 정의한 내용은 전체에 상속된다. #추가되는 레이어에서 정의 내용은 상속되지 않는다. diamonds %>% ggplot(aes(x=carat, y =price))+geom_point(aes(color=clarity)...

[R_bigdata] R을 활용한 시각화(도식)

#day04_04_visual.R ##데이터 시각화 예제 cars #기초통계 min(cars$speed) max(cars$speed) mean(cars$speed) median(cars$speed) summary(cars) #사분범위 : 자료를 4등분한 위치에 있는 값 quantile(cars$speed) #시각화로 데이터 보기 #산포도 : 데이터가 어떻게 분포가 되어있는지 확인할 수 있는 시각화 방법 #plot(x,y) plot(1,1) #실습하기. plot을 이용하여 cars데이터에서 speed 에 다른 dist(제동거리)를 도표에 그려라 plot(cars$speed,cars$dist) #x축과 y축의 이름(label)을 부여하기 plot(cars$speed,cars$dist,xlab='스피드',ylab='거리') #데이터를 표시하는 방법 변경 plot(cars$speed,cars$dist,type='p') #point plot(cars$speed,cars$dist,type='l') #line plot(cars$speed,cars$dist,type='b') #both #bar plot() : 막대 그래프 #표현 값에 비례하여 높이와 길이를 가지는 그래프 #값의 비교를 위해서 쓰인다. mtcars mtcars$gear table(mtcars$gear) barplot(mtcars$gear) barplot(table(mtcars$gear)) #실습 #pipe를 이용한 문법으로 작성해보기 library(dplyr) mtcars$gear %>% table() %>% barplot() #barplot(table(mtcars$gear)) #실습 #예제(hot-dog-contest-winners.csv) hotdogs <- read.csv('https://raw.githubusercontent...

[R_bigdata] R을 활용한 형태소 분석 및 시각화 (워드 클라우드)

KoNLP를 활용하여 형태소 분석 패키지를 이용할 수 있다. 또 이렇게 분석된 한글을 통해 워드 클라우드 형태의 시각화 자료도 생성 가능하다. #day04_03_wordcloud.R install.packages('tidyverse') library(tidyverse) #1. 한글 분석을 위한 데이터 불러오기 moon_txt <- readLines('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/moon_UTF8.txt',encoding = 'UTF-8') moon_txt #한글 형태소 분석을 위한 형태소 분석기 설치 #java가 없으면 에러 install.packages('KoNLP') #CRAN 에서 제외된 패키지설치하기 ex)KoNLP install.packages('devtools') install.packages('https://cran.r-project.org/src/contrib/Archive/KoNLP/KoNLP_0.80.1.tar.gz',repos = NULL, type='source') devtools::install_github('haven-jeon/KoNLP') library(KoNLP) SimplePos09('밥을 먹고 싶다고 생각하는 밤') moon_ko<- moon_txt %>% SimplePos09() moon_ko library(reshape2) #melt()를 이용하여 원 데이의 출현 빈도 숫자를 세고, tibble을 활용하여 dataframe 의 형태로 변경한다. moon_ko %>% melt %>% head(10) #melt : 리스트 내의 데이터를 빼내면서 정형화 시키는 메서드 moon_ko %>% melt %>% as_tibble() %...

[R_bigdata] R의 문법 (PIPE기법)

R에는 pipe 기법이라고 하여 메서드 내에 메서드를 넣는 것 처럼의 기존의 방식과 달리 연속적으로 연결하는 형태로 표현하는 pipe 기법을 사용할 수 있다. #day04_02_pipe.R #pipe 기법 #앞 단계의 실행 결과가 뒤로 전달되는 형태, 앞 단계가 뒤로 연결되는 형태 #기름관이나 수도관 pipe(파이프)를 생각하면 된다. #'%>%' ctrl + shift + M  을 통해 사용할 수 있다. library(dplyr) #기본 문법 print(1) #1,2,3 을 모두 더해서 출력한다면  ? sum(print(c(1,2,3))) #변수를 사용한다면 a<-c(1,2,3) b<-sum(a) print(b) #pipe로 사용하면 1 %>% print() #1이 뒤로 전달 된다는 의미 c(1,2,3) %>% sum() %>% print()

[R_bigdata] 크롤링을 활용하여 특정 조건의 데이터 수집하기

크롤링 기법을 통해 특정 사이트로 부터 검색어 기반의 데이터를 수집한다. 웹 사이트의 페이지를 기계적으로 받아와, 정확한 부분만을 추출할 수 있다. 그렇게 수집한 데이터는 csv 파일로 변환하여 저장가능하다. #day04_01_crawling.R #r을 활용, 특정사이트로 부터 검색어 기반의 데이터를 모으기 install.packages('rvest') install.packages('dplyr') library(rvest) library(dplyr) #1. 사이트  이동 #url 얻기 #http://jtbc.joins.com/search/news?term=빅데이터 my_keyword = '빅데이터' url = 'http://jtbc.joins.com/search/news?term='+ my_keyword read_html(url) #긁어오고 싶은 페이지를 4개정도 미리 수동으로 가져오기 #http://jtbc.joins.com/search/news?page=4&term=%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0 my_url = NULL for(x in 1:5){  my_url[x]<-paste0('http://jtbc.joins.com/search/news?page=',x,'&term=',my_keyword) } my_url #2.해야할 작업이 무엇인지 정의 #제목을 클릭해서 해당 기사의 본문을 가져오기 #class="sch_replay_list news_list btm_line" my_links<- NULL #my_url의 각 방의 url 정보를 이용하여 my_links에 본문의 주소 50개를 채워라 a<-read_html(my_url[1]) b<-html_node(a,'.sch_replay_list') #띄어쓰기로 클...

[R_bigdata] R을 활용한 크롤링, 데이터 편집 및 시각화

웹에서 찾을 수 있는 데이터를 끌어오는 것을 크롤링이라고 하는데, 그 방법에 대한 예제이다. 여기서는 데이터를 가져오는 것 뿐만 아니라 가져온 데이터를 선택하거나 원하는 형태로 편집한다. 또 pie() 또는 barplot() 을 통해 데이터를 시각화 할 수도 있다. #day03_05_crawling.R install.packages('rvest') library(rvest) #id : '#' #class : '.' tour_rank <- read_html('https://en.wikipedia.org/wiki/World_Tourism_rankings') tables<-html_nodes(tour_rank,'.wikitable') tables #세계국가 순위는 1번째 방에 저장되어있다. html_table(tables[1]) df <- html_table(tables[1])[[1]] df #컬럼 정보 확인 str(df) #rank,destination,2018년도 자료만 따로 구성하기 df1<- df[,c(1,2,3)] #컬럼명(열)의 이름이 너무 길어서 수정하기 colnames(df1)<-c('rank','des','tour') df1 str(df1) #million #df1의 tour타입이 문자형이므로 수치형으로 변경하기 # - million을 없애기 # - million을 ''(공백)으로 변경하기. #gsub(조건, 치환될 값, 데이터) df1$tour <- gsub(' million', '', df1$tour) df1 # 타입 확인하기 class(df1$tour) # df1의 tour의 타입을 숫자형으로 변경하기. df1$tour <- as.numeric(df1$tour) # 타입 확인하...

[R_bigdata] R의 데이터 전처리(dplyr)

R을 통해 데이터를 분석하는 방법이다. 이를 위해서는 'dplyr' 라는 패키지가 필요하므로 설치해 주어야 한다. 이 패키지에서 제공하는 함수들을 통해 행 또는 열을 추출하거나 그룹화 하여 피벗테이블과 같은 형태의 데이터로 재 가공할 수 있다. #day03_04_preprocessing.R install.packages('dplyr') library(dplyr) #dplyr #r에서 데이터 전처리(분석)등을 하기 위해 기본적으로 필요한 패키지들을 모아둔 패키지 #대표적인 함수 #filter():행 추출 #select():열 추출 #mutate():열 추가 #group_by():그룹(집단)핑 기능 #subset():데이터 부분 선택 df_web<-read.csv('https://www.data.go.kr/comm/file/download.do?atchFileId=FILE_000000001507043&fileDetailSn=3',header=T) df_web head(df_web) #데이터를 조건에 맞춰 선택하는 함수 subset() 을 이용하여 시도명, 시군구명, 도서관 유형에 해당되는 데이터를 조회한다. df_lib_g<-subset(df_web,select=c('시도명','시군구명','도서관유형')) df_lib_g colnames(df_lib_g)<-c('sido','sigungu','type') head(df_lib_g) #그룹으로 분리하기 #sido로 그룹화하기 #group_by(데이터, 그룹key1,그룹key2) group_by(df_lib_g,sido) #시도별로 정렬 count(group_by(df_lib_g,sido)) #시도별로 정렬 후 count() 사용하여 데이터 개수 검색 #실습 #df_lib_g를 sido,sigungu별 coun...

[R_bigdata] 웹 상의 데이터를 읽는 방법과 엑셀의 데이터를 읽을 수 없는 이유, 결측치

웹 상의 데이터를 읽는 방법과 엑셀의 데이터를 읽을 수 없는 이유 데이터의 형태에 따라 read.table, read.csv 를 이용하여 웹 의 절대경로를 통해 조회할 수 있다. 한편 엑셀의 데이터는 보안상의 이유로 위와 동일한 방식으로 읽는 것이 거의 불가하다. NA(결측치)의 여부를 탐색할 수 있는 메소드인 is.na() 를 통해 결측치값이 존재하는지 파악하고, NA를 대신할 값을 대입할 수 있다. #day03_03_file.R mem<- read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_sep2.txt',header=TRUE,sep=',') mem #read.csv는 read.table에서 sep=','와 header=TRUE 옵션이 기본인 함수이다. read.csv('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/member_yes_sep2.txt') fruits <- read.csv('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/fruits.csv') fruits fruits <- read.csv('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/fruits.csv', row.names = '순번' ) #기본 열이름 지정, 여기서 순번은 no에 해당된다. # fruits <- read.csv('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/fruits.csv',row.names = '남은수량'...

[R_bigdata] 다양한 형태의 파일 읽기

pdf와 csv 파일이나 테이블 형태의 비정형 데이터를 읽어들이는 방법이다. 또 데이터의 형식에 따라 변형하여 읽어오기도 하고, 데이터의 노이즈 등에 따라 부분적으로 읽어오는 방법이다. #day03_02_file.R ##기본 R이 지원하지 않는 확장자를 가진 파일 읽어오기 #pdf,xls 등이 가능하다. #doc,docx등은 pdf나 xls로 변환 후에 사용. #1.pdf로드하기 install.packages('pdftools') library(pdftools) pdf1<-pdf_text('C:/dev/movie_review_02.pdf') pdf1 #읽어온 데이터의 개행문자(줄바꿈) \r,\n #정제하기 pdf1 #strsplit(데이터,조건) : 특정 조건으로 데이터를 자르는 것 txt_pdf<-strsplit(pdf1,'\r\n') #strsplit 은 리스트로 결과가 도출 txt_pdf #실습 #txt_pdf에서 '비정형 데이터~' 만 조회해라 txt_pdf[[1]][2] txt_pdf2 <-txt_pdf[[1]] #3번째, 4번재 데이터를 합쳐서 6번째 방에 저장해주세요. txt_pdf[[1]][6] = paste0(txt_pdf[[1]][3],txt_pdf[[1]][4]) txt_pdf[[1]][6] #3번째, 4번재 데이터를 삭제하기 txt_pdf3<-txt_pdf2[c(-3,-4)] #'-' 를 붙이면 해당 인덱스의 값은 삭제된다. txt_pdf3 #데이터를 테이블 구조로 읽어들이기기 #단, 데이터가 테이블 구조로 되어 있어야 한다! 또한 정형이나 비정형 여부는 상관없다. #사용 예제(member_no_title.txt) mem1<-read.table('https://raw.githubusercontent.com/luxdolorosa/data_set/master/etc/mem...

[R_bigdata] 파일 데이터 읽어오고, 조건에 맞춰 조회하기

파일 데이터를 읽어오고 , 조건에 맞춰 검색하는 방법에 대해 알아본다. 파일 데이터는 웹 또는 저장장치의 경로를 통해 읽어오게 되는데, 여기서 절대적 경로와 상대적 경로의 개념을 확인하는 것이 중요하다. 조건에 맞춰 찾는 방법으로는 grep() 메서드를 활용하게 된다. grep을 통해 문자열 탐색, 문자 길이 탐색 등을 할 수 있다. #day03_01_file ##fruit 변수에 벡터를 만들어라라 fruits<-c('apple','mango','banana','Apple','pineapple') fruits #특정 조건 검색 #grep(찾을 조건, 대상) #fruit 벡터에 apple이라는 문자가 포함된  데이터가 존재하는지 검색 #대소문자를 구분하여 검색한다. grep('apple',fruits) # 1 5 를 리턴한다. 다만 여기서 5는 pineapple의 'apple'을 의미한다. #대소문자를 구분하지 않도록 옵션을 지정하기(ignore.case = TRUE) grep('apple',fruits,ignore.case = TRUE) # 1 4 5 리턴 #실습 #fruits 에서 a가 포함되는 데이터만 검색해보라 grep('a',fruits,ignore.case = TRUE) #위치가 아닌 데이터를 조회해라 a<-grep('a',fruits,ignore.case = TRUE) a fruits[a] fruits[grep('a',fruits,ignore.case = TRUE)] fruits[grep('a',fruits)] #시작과 끝값을 이용해서 검색하기 #a로 시작하는 조건 값 검색하기기 grep('^a',fruits,ignore.case = TRUE) #1 4 리턴 grep('^a',frui...

[R_bigdata] R에서 유용하게 사용되는 함수들 (자료구조)

이미지
데이터 구조를 활용할 때 유용하게 사용할 수 있는 함수들이다. 목차 #day02_11_useful.R #데이터 구조와 같이 자주 사용되는 함수들 vec1 <- c(1:3) vec2 <- c(4:6) vec3 <- c(1:4) #합치기 - union() union(vec1,vec2) #1 2 3 4 5 6 union(vec1,vec3) #1 2 3 4 : 중복된 결과를 제외하고 합쳐진다. union(vec2,vec3) #4 5 6 1 2 3 : 순서 나열은 되지 않는다. union(vec3,vec2) #1 2 3 4 5 6 c(vec1,vec3) # 1 2 3 1 2 3 4 : 중복된 결과를 포함하여 합쳐진다. #차집합 - setdiff() #setdiff(데이터1,데이터2)를 사용하면 데이터1에서 데이터2의 값을 제외한 결과가 출력된다. setdiff(vec3,vec1) #교집합 - intersect() intersect(vec3,vec2) #ctrl+v #paste(데이터1, 데이터2 ,,,구분자) : 복사하기 paste('a','b') #"a b" 빈칸이 들어간다. 여기서 빈칸은 구분자(separator)이다. paste('a','b',sep=',') paste('a','b',sep='') paste0('a','b') #0이 붙은 paste 함수는 공백없는 구분자를 가지는 함수이다. #실습 #x변수의 각 자리에 x1, x2, x3, x4, x5 가 조회될 수 있도록paste를 이용해라 rep('x',5) x<-c(rep('x',5)) paste0(x,c(1:5)) #1,2,3,4,5를 순차적으로 넣어줄 수 있는 방법은 무엇인가. c()를 이용하는 방법 #벡터연산 a...

[R_bigdata] R의 자료구조 (팩터)

팩터는 수준이라고 불리는 순서를 지정할 수 있는 데이터 구조이다. #day02_10_factor.R #팩터(범주) : 요인(카테고리)이 몇 개로 되어있는지 구분하는 데이터 구조 #팩터는 문자처럼 보이지만 숫자형이다. #팩터는 수준(level)이라고 알려진 사전에 정의된 값만 저장(수정)이 가능하다. #팩터는 순위를 가질 수 도 있고, 순위가 없을 수 있다. factor(c('male','female','male','female')) #[1] male   female male   female #Levels: female male ==> 여기서 levels는 수준이다. gender <- factor(c('male','female','male','female')) class(gender) #levels개수 세기 nlevels(gender) #female, male 2개이므로 2가 리턴될 것이다. #level 조회하기 levels(gender) # 순서가 부여되지 않은 상태 #요인에 순서가 필요한 데이터의 경우 dust <- factor(c('low','medium','high')) dust #순서를 지정하여 factor 생성하기 dust <- factor(c('low','medium','high'),levels =c('low','medium','high'),ordered=TRUE) #ordered=TRUE 를 해주면 순서가 지정된다. #순서는 low<medium<high 순서대로 나타난다. dust <- factor(c('low','medium','high'),levels =c('high...

[R_bigdata] R의 자료구조 (list)

리스트는 데이터들의 집합이라고 정리할 수 있을 것이다. 어떠한 형태의 데이터이든 함께 묶일  수 있다. #day02_09_list.R #리스트형 : 전부, 몽땅 #리스트 만들기 #list(데이터) #list()로 만들면 list형 list_a<-list(1:5) list_a #list_a에서 조회하기 list_a[2] #Null 리턴 list_a[[1]] #벡터 리턴 list_a[[1]][2] #조회 완료 #리스트 만들기 #이름을 부여 a<-c(1:5) a b<-matrix(c('a','b','c','d'),nrow=2,ncol=2) b z<-list('a'=a,b) #a변수만 a층이라고 이름을 부여한다. z #리스트의 층을 조회하는 방법 z[[1]] z[[2]] z[['a']] #a로 이름을 부여했기 때문에 'a'를 통해 조회가 가능하다. z[c(1,2)] #이런 식으로 벡터를 통해 조회가 가능하다. 이 경우 a,b 모두 조회가능 z[[c(1,2)]] #이 경우는 리스트 1(a)의 2번 인덱스 값이 조회된다.  z[['a']][2] 와 같은 결과 #이름을 이용하여 조회하는 방법 z$a   #$를 이용하여 이름을 사용할 수 있다. 현재는 a층만 나타난다. z$a[2]   #z$a 중 index가 2인 값을 조회한다. z$a   #z[['a']] 와 같은 결과 도출가능하다. #실습하기 #z의 2계층에서 2행 2열의 데이터를 조회해라 z[[2]][2,2]

[R_bigdata] R의 자료구조 (데이터프레임)

데이터프레임이란 매트릭스와 같이 행과 열로 이뤄진 형태이다. 단 매트릭스와의 다른 점은 다른 형태의 데이터 유형이 함께 저장 될 수 있다는 것이다. #day02_08_dataframe.R #데이터프레임 : 엑셀의 자료구조와 동일. 매트릭스와 같이 행과 열로 이뤄진 형태이며 #데이터 유형이 섞일 수 있다. (이기종의 데이터를 저장할 수 있다.) #가장 많이 사용하는 데이터 구조! #data.frame(벡터1,벡터2,벡터3) name <- c('korea','E class','info') name age <- c(20,25) age student<-c(TRUE,FALSE,FALSE) student data.frame(name,student,age) #age 가 들어가는경우 Error 발생 #   Error in data.frame(name, student, age) : #     arguments imply differing number of rows: 3, 2 #개수가 부족하다는 것이다. age <- c(20,25,30) no <- c(1001,1002,1003) df1 <- data.frame(no,name,student,age) df1 <- data.frame(row.names = no,name,student,age) df1 <- data.frame(row.names = name,no,student,age) #만약 row.names에 name이 들어간다면 위와 달리 name이 먼저 나타나고 no가 이후에 나타날 것이다. df1 #실습 #df1에서 no가 1001인 데이터를 조회해라. df1[1001,] #숫자로 조회하는 경우 1001 번째의 인덱스를 의미한다. 인덱스로 조회한 경우 df1['1001',]  #따라서 문자 형태로 조회해야함. row.names 로 조회한 경우 #조회 방식은 matrix와 비...

[R_bigdata] R의 자료구조 (Array)

R에서 Array(배열)란  매트릭스가 여러개의 층으로 쌓인 것을 말한다. 다른 언어에서의 3차원 배열이 이에 해당될 것이다. #day02_07_array.R #메트릭스를 2계층(차원) 이상으로 쌓은 것 #형태 #array(데이터,dim=c(가로,세로,층)) arr1=array(c(1:16),dim=c(2,2,4)) #, , 1 : 비어져 있는 것은 전체 행과 열을 의미할 것이다. 여기서는 첫번째 1층인 매트릭스를 볼 수 있다. #[,1] [,2] #[1,]    1    3 #[2,]    2    4 #배열 조회하기 #array[행,열,계층] #arr1의 2번째 층 전체를 보여라 arr1[,,2] #arr1의 2번째 층의 1행 2열을 보여라 arr1[1,2,2] #전체 중 고르는 방식 arr1[,,2][1,2] #매트릭스에 대한 조회. 둘다 같은 결과 도출 #array의 값을 변경하기 arr1[1,2,2] <- '가' arr1 # 전체가 문자로 변경된 것을 확인할 수 있다.

[R_bigdata] R의 자료구조 (매트릭스)

매트릭스는 행열로 이뤄진 자료구조로, 스칼라 , 벡터 보다 큰 의미를 가지고 있다고 볼 수 있다. 벡터는 여러개의 스칼라 자료구조의 집합이라고 볼 수 있듯이 매트릭스의 행과 열 역시 여러개의 벡터 구조로 되어있다고 할 수 있다. #day02_06_matrix.R #행렬 : 같은 자료형을 가진 데이터를 행과 열로 나열한 자료구조 #m*n 의 형태 #matrix(벡터, 행수, 열수) a<-1:9 a mat1 <- matrix(a,nrow=3,ncol=3) #여기서 nrow와 ncol은 키워드이기 때문에 변경할 수 없다. mat1 <- matrix(a,3,3) #다만 이러한 식으로 nrow,ncol 을 제외하고 호출하더라도 정상작동한다. mat1 #매트릭스의 조회 mat1 ##mat1에서 1행의 전체 열을 조회해라 mat1[1,] ##mat1에서 값 5를 조회해보자 mat1[2,2] #실습 #mat1에서 1행의 1열과 3열을 조회해주세요 mat1[1,c(1,3)] #벡터를 열의 자리에 넣음으로써 같이 조회가 가능하다. mat1[1,c(1,4)] #3열이 최대이기 때문에 out of bounds 오류가 발생한다. #데이터의 두번째 방의 값을 조회해라 #변수를 이용하는 방법 m <- mat1[1,c(1,3)] #1,7 m[2] #1,7 중 두번 째인 7이 출력될 것 #mat1[1,c(1,3)] 이 변수 m에 들어가는 것이 가능하다면 아래와 같이 쓰는 것도 가능하다 . mat1[1,c(1,3)][2] #matrix에 이름 붙이기 #행에 이름 붙이기: 이름이 붙더라도 인덱스는 계속 존재한다. rownames(mat1)<-c('a','b','c') mat1 #열에 이름 붙이기 colnames(mat1)<-c('d','e','f') mat1 #<mat1> 의 결과 #  d e ...

[R_bigdata] R의 자료구조 (벡터)

스칼라가 단 한개의 달걀이라면 벡터는 일렬로 나열된 계란이라고 볼 수 있다. 자바에서의 배열로 생각할 수 있다. #day02_05_vector.R #벡터 : 같은 자료형을 가진 스칼라 값들을 순서를 가지고 일렬로 나열한 구조 #자바에서의 배열 #c() : combine 합치다.인자값을 모두 합치는 '함수' a<-c(1,2,3,4) a #숫자형 배열이 된다. b<-c(TRUE,TRUE,FALSE) b #여러 자료형이 섞인 경우 더 큰 자료형으로 통일된다. => 백터는 다른 자료형을 가질 수 없기 때문에 더 포괄적인 타입으로 통일된다. #보통의 경우 문자형으로 변환된다. 아래의 예시에서도 문자열로 변환된 것을 확인할 수 있다 . c<-c(1,'2',TRUE) c class(a) clasS(b) class(c) #벡터에서 데이터를 1개 꺼내면 자료구조는 스칼라가 된다. #vector 의 조회 #벡터는 index로 조회가 가능하다. c[1] #index 1의 위치에 있는 데이터 조회 c[2] c[3] #벡터에 이름 지정하기 #이름을 숫자로 지정한다면 자동으로 문자로 지정된다. 만약 숫자로 이름이 지정되는 경우 index와 겹치는 문제가 발생한다. #따라서 문자로 지정하는 것이 바람직하다. names(c) <- c('a','b','c') names(c) <- c('a') #이 경우 나머지 열의 이름은 NA로 초기화된다. c #벡터에 이름을 지정한다면 이름으로 조회가 가능하다. c['a'] c['b'] c['c'] c[c('a','b')] #이런 식으로도 호출이 가능하다. 이 경우 첫 값과 두번째 값이 출력될 것이다. c[1] c[2] c[3] #실습하기 #다음과 같이 출력되도록 벡터를 작성해라 dr...

[R_bigdata] R의 자료구조 (스칼라)

R에는 여러가지의 자료구조가 존재한다. 대표적으로 스칼라, 벡터, 행렬, 배열, 데이터프레임, 리스트, 펙터(factor) 등이 있다. 스칼라(scala) 는 데이터 1개를 저장한 구조로 예를 들면 달걀 한 개를 들 수 있다. #day02_04_scala.R #스칼라 : 단순한 데이터 1개를 저장한 구조 3 'Hello' 3.14 TRUE

[R_bigdata] R의 함수, 사용자 정의 함수 만들어보기

#day02_03_function.R #함수 #함수 : sum(),mean()같이 자주 사용되는 작업을 사전에 미리 만들어두어 사용하기 편하게 묶어둔 명령어 모음 #sum()은 내장함수로 전달 받은 값을 모두 더한다. sum(1,2,3,4) #sum()이라는 내장함수가 존재하지 않는다면 사용자 정의 함수를 만들어 주어야 한다. #function_name <- function(인자1,인자2,인자3...){ #    행동할 작업 #    } my_sum <- function(x,y,z){   x+y+z } my_sum(1,2,3) #함수2 #사용자 정의 함수 만들어보기 fruit_func = function(z){   if(z=='바나나'){     print('Very good')   }else if(z=='사과'){     print('Good')   }else{     print('SOSO')   } } fruit_func('바나나') #Very Good fruit_func('사과')#Good fruit_func('배') #soso fruit_func('감') #soso