본문 바로가기
반응형

R80

[R강의] 140. For 문을 While 문으로 바꾸는 방법 For 문을 While 문으로 바꾸는 방법을 알아봅시다. 실제 데이터분석을 할 때 For 문을 While 문으로 바꿀 일은 거의 없을 것입니다. R 수업 예제문제나 시험문제 정도로 나올 수 있겠네요. 연습삼아 해봅시다. 3의 배수를 3부터 30까지 출력하는 For문입니다. for (i in 1:10){ print(3*i) } 결과는 아래와 같습니다. [1] 3 [1] 6 [1] 9 [1] 12 [1] 15 [1] 18 [1] 21 [1] 24 [1] 27 [1] 30 위 For 문을 While 문으로 바꾸면 아래와 같습니다. i=1 while(i 2022. 4. 28.
[R 코딩 연습문제] 피타고라스 음계 구하기 Question) 피타고라스 음계의 진동수를 구하는 수열은 아래와 같습니다. $a_{1}=1, a_{n+1}=\left\{\begin{matrix} \frac{3}{2}a_{n} & (n \ is \ odd)\\ \frac{3}{4}a_{n} & (n \ is \ even) \end{matrix}\right.$ 변수 n에 값을 입력하면, 해당 값까지의 수열을 출력해주는 코드를 만드시오. Answer) an=1 n=15 for (i in 2:n){ if (i%%2 ==0) # 짝수 {an[i]=an[i-1]*3/2} else if (i%%2 ==1) # 홀수 {an[i]=an[i-1]*3/4} } print(an) 출력결과 > print(an) [1] 1.000000 1.500000 1.125000 1.6.. 2022. 4. 2.
[R강의] 130. 데이터프레임 열 인덱싱 결과는 두 가지 입니다. 데이터프레임의 열에 접근할 때, 인덱싱 결과는 두 가지입니다. 하나는 데이터프레임이구요. 다른 하나는 벡터입니다. 우리가 원하는 결과를 의도하고 인덱을 해주어야 하는데요. 방법을 알아봅시다. 먼저 데이터프레임을 하나 정의해봅시다. A=c(5,4,7,6,2,1,3) B=c(1,2,3,4,5,6,7) df=data.frame(A,B) > df A B 1 5 1 2 4 2 3 7 3 4 6 4 5 2 5 6 1 6 7 3 7 첫번째 열에 접근하다고 할 때, 결과가 데이터프레임인 경우는 아래와 같습니다. > df['A'] A 1 5 2 4 3 7 4 6 5 2 6 1 7 3 > df[1] A 1 5 2 4 3 7 4 6 5 2 6 1 7 3 열의 이름을 사용하거나 열 번호를 사용하면 되는데요. 행을 명시하지 않.. 2022. 4. 2.
통계프로그램 R로 피아노 연주하기 C4를 연주하는 예시입니다. library(music) playNote("C4",plot=TRUE,duration=2) music 패키지 설치해주시면 됩니다. duration 은 길이입니다. 아래 피아노가 출력되며 연주합니다. > playNote("C4",plot=TRUE,duration=2) | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | C | D | E | F | G | A | B | C | D | E | F | G | A | B | C | Notes: C4 2022. 4. 2.
R 기초 글 하나로 끝내기 아주 단 시간에 R 기초내용의 큰그림을 그려봅시다. R의 기본적인 내용은 아래 여섯가지입니다. 1. 자료형 2. 연산자 3. 자료구조 4. 반복문, 조건문 5. 함수 6. 패키지 R 뿐만 아니라 대부분의 프로그래밍 언어의 공통적 특징입니다. 우리가 코딩을 하는 이유는 컴퓨터에게 일을 시키기 위해서입니다. 컴퓨터가 하는 일은 많은 경우 자료를 가공하는 일입니다. 자료를 변형하거나, 수식을 적용하여 무언가 계산하는 등의 일입니다. 1. 자료형 우리가 사용하는 자료의 형태는 크게 두가지입니다. 숫자와 문자입니다. 따라서 컴퓨터 언어들도 숫자와 문자라는 기본 자료형을 갖도록 만들어져 있습니다. 컴퓨터에는 한가지 자료형이 더 있습니다. 바로 논리형입니다. 논리형은 TRUE와 FALSE 라는 자료형을 말합니다. 숫.. 2022. 3. 30.
R 조건문,반복문,함수 한눈에보기 while (조건) {명령문} for(조건) {명령문} if(조건) {명령문} elseif(조건) {명령문} else{명령문} 함수이름=function(변수){내용} 2022. 3. 30.
R 자료구조 한눈에 보기 (벡터,배열,요인,리스트,데이터프레임) R 자료구조 한눈에보기 (클릭해서 보세요) 아래는 복사해서 사용할 수 있는 코드입니다. #벡터예시 vec=c(1,2,3) #배열 예시 ar=array(1:12,dim=c(3,4)) #요인 예시 fac=factor(c(1,3,2,2), level=c(1,2,3), labels=c("bad","good","great"), ordered=TRUE) #리스트 예시 li=list(vec,ar,fac) #데이터프레임 예시 name=c('kys','ojh','psk') gender=c('M','F','M') height=c(182,165,177) df=data.frame(name,gender,height) 2022. 3. 29.
R에서 데이터프레임을 만드는 네가지 방법 (자주쓰는 방법들) R에서 데이터프레임을 만드는 네가지 방법입니다. 제가 자주 사용하는 방법을 정리한 것입니다. 1. 열백터로 데이터프레임 만들기 name=c('kys','ojh','psk') gender=c('M','F','M') height=c(182,165,177) df=data.frame(name,gender,height) > df name gender height 1 kys M 182 2 ojh F 165 3 psk M 177 2. 데이터프레임에 열 추가하기 name=c('kys','ojh','psk') gender=c('M','F','M') height=c(182,165,177) df=data.frame(name,gender,height) df['age']=c(18,22,32) > df name gender he.. 2022. 3. 29.
[R강의] 127. 평균±표준편차(최솟값,최댓값) 출력하는 함수 만들기 논문에 데이터를 정리한 표들을 보면 아래와 같은 형태가 많이 등장합니다. 평균±표준편차(최솟값,최댓값) 데이터를 이용하여 위 값들을 구하려면 함수를 네번 사용해야합니다. 매번 코딩하기 귀찮아서 함수를 만들었습니다. 아예 위와 같은 형태로 정리되서 출력되도록 만든 함수입니다. 함수를 만드는 과정을 설명하겠습니다. 함수 이름은 MSMM 이라고 놓겠습니다. Mean,Standard deviation, Min, Max 의 줄임말입니다. 입력값은 데이터입니다. 벡터 형태로 입력받습니다. MSMM=function(my_data) { } 평균,표준편차,최솟값,최댓값을 구해줍니다. 결측치가 있을 수도 있으니 na.rm=TRUE 라는 옵션을 설정합니다. 결측치가 있을 경우 제거하라는 옵션입니다. MSMM=function.. 2021. 12. 29.
R 하트모양 그래프 $r=a(1-cos(t))$를 그리면 하트모양이 됩니다. t=seq(0,2*pi,0.01) a=10 r=a*(1-cos(t)) x=r*cos(t) y=r*sin(t) plot(x,y) 옆으로 돌리려면 코사인 대신 사인을 입력하면 됩니다. 90도 회전하기 t=seq(0,2*pi,0.01) a=10 r=a*(1-sin(t)) x=r*cos(t) y=r*sin(t) plot(x,y) 2021. 12. 7.
[R 코드 모아보기] 확률분포함수 모아보기 사용법은 R 콘솔창에 ?함수이름 입력하면 됩니다. 예를들어 정규분포의 확률밀도함수 사용법이 궁금하면 ?dnorm 입력하시면 됩니다. 균등분포 dunif : 확률밀도함수(probability density function) punif : 누적분포함수(cumulative distribution function) qunif : 누적분포함수의 역함수(inverse cumulative distribution function) runif : 임의추출 정규분포 dnorm : 확률밀도함수(probability density function) pnorm : 누적분포함수(cumulative distribution function) qnorm : 누적분포함수의 역함수(inverse cumulative distribution.. 2021. 10. 15.
[R강의] 126. 히스토그램 원하는 값으로 만들기 원하는 구간에 원하는 도수를 갖는 히스토그램을 만들고 싶다고 합시다. 예를들면 아래와 같은 히스토그램을 만들고 싶습니다. 150~160 35 160~170 20 170~180 30 아래와 같이 계급 평균값과 rep 함수를 이용하여 데이터를 생성한뒤 그려주면 됩니다. data=c( rep(155,35), rep(165,20), rep(175,30) ) hist(data,breaks=seq(150,180,by=10)) 2021. 10. 12.
[R강의] 125. 엑셀의 vlookup 기능 구현 엑셀 vlookup 기능을 알고 있다고 전제하고 진행합니다. 모르시는 분들은 아래 글 참고해주세요. https://statools.tistory.com/267 [엑셀 통계] 62. vlookup vlookup 에서 v는 vertical 입니다. vertical은 세로의 라는 의미인데 세로방향은 '열'입니다. vlookup 함수는 특정 열에서 우리가 원하는 데이터를 가져오는 기능입니다. 예를 들어봅시다. 아래와 같이 수 statools.tistory.com vlookup 함수는 아래와 같은 형식으로 사용합니다. vlookup 함수에서는 먼저 적용할 대상을 고르는데 이는 행을 고르는 것과 같습니다. 행을 고르고 이 행에 해당되는 특정 열의 값을 최종적으로 선택합니다. 같은 과정을 R에서 해보겠습니다. 먼저 .. 2021. 9. 27.
[R 코드 모아보기] 정규성 검정 5가지 @목차 KS test LF test CVM test AD test SW test KS test (Kolmogorov-sminov test) #데이터는 벡터형식입니다. ks.test(data,pnorm) LF test (Lilliefors test) #데이터는 벡터형식입니다. #패키지 불러오기 library(nortest) #정규성검정 lillie.test(data) CVM test (Cramer-von Mises test) #데이터는 벡터형식입니다. #패키지 불러오기 library(nortest) #정규성검정 cvm.test(data) AD test (Anderson-Darling test) #데이터는 벡터형식입니다. #패키지 불러오기 library(nortest) #정규성검정 ad.test(data) .. 2021. 9. 9.
[R강의] 119. 정수를 쪼개서 각각의 숫자를 벡터로 만들기 (strsplit) 12345 라는 수가 있습니다. 이 수를 c(1,2,3,4,5) 라는 벡터로 만들고 싶습니다. 숫자가 작을 때는 직접 하면 되는데 숫자가 커지면 힘들어집니다. 코드를 이용해서 해봅시다. 먼저 아래 숫자를 변수에 입력합니다. a = 12345 위 숫자를 문자로 인식한 뒤 한 단어씩 나눠서 리스트로 만들어줍니다. 결과는 a_ch 라는 변수에 입력하겠습니다. a_ch=strsplit(as.character(a), "") 콘솔창에서 확인해보면 아래와 같습니다. > a_ch [[1]] [1] "1" "2" "3" "4" "5" 리스트인 것을 알 수 있습니다. 인덱싱을 통해 벡터로 만들어줍니다. > a_ch2=a_ch[[1]] > a_ch2 [1] "1" "2" "3" "4" "5" as.numeric 를 이용하여.. 2021. 7. 12.
[R강의] 118. 표기법 설정하기 (지수표기 vs 일반표기) R에서 숫자를 출력할 때 표기하는 방법은 크게 두가지가 있습니다. 지수표기법과 일반표기법입니다. 1100을 표기한다고 할 때 1.1e^2 는 지수표기법, 1100은 일반표기법입니다. R에서는 어떤 룰을 가지고 두 표기법 중 하나를 선택합니다. 정확히 어떤 룰인지는 저도 잘 모르겠습니다. 예를 들면 아래와 같습니다. > 1000 [1] 1000 > 1000000 [1] 1e+06 > 2222 [1] 2222 > 222222222222222 [1] 2.222222e+14 한쪽 표기 방법을 선택하고 싶은 경우 options(scipen=값) 을 설정해주면 됩니다. 값이 양수로 커질 수록 일반표기법이 우세해 지고, 음수로 커질 수록 지수 표기법이 우세해집니다. > options(scipen=999) > 2222.. 2021. 7. 11.
[R강의] 117. 출력 유효숫자 개수 설정하기 콘솔 창에 123.4512345 를 입력해봅시다. > 123.4512345 [1] 123.4512 일곱개의 유효숫자가 출력됩니다. 유효숫자의 디폴트 셋팅 값이 7이기 때문입니다. 디폴트 셋팅 값을 확인해봅시다. getOption 함수를 사용합니다. > getOption("digits") [1] 7 유효숫자 개수를 바꿔봅시다. options 함수를 사용합니다. > options(digits=25) Error in options(digits = 25) : invalid 'digits' parameter, allowed 0...22 25개를 입력하면 에러가 뜹니다. 최대 22개까지 입력이 가능합니다. 22개로 설정해봅시다. > options(digits=22) 몇개까지 입력되나 확인해봅시다. > 123.451.. 2021. 7. 11.
[R강의] 116. 01,02,03,.. 형태의 벡터 만드는 방법 01,02,03,04...와 같은 벡터를 만드는 방법입니다. sprintf 함수를 사용합니다. sprintf 함수는 포멧팅 방식을 설정할 수 있습니다. sprintf(포멧팅 방식, 인자) ex) 01~50 까지의 벡터를 01,02,03...으로 출력 > num=sprintf("%02d", 1:50) > num [1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" [20] "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" [39] "39" "40" "41" "42" .. 2021. 6. 28.
[R 크롤링] 11. 한국거래소에서 전체 상장종목 목록 가져오기(어려운 버전) Step1. 홈페이지 접속하기 한국거래소 홈페이지에 들어갑니다. http://www.krx.co.kr/main/main.jsp 상단 탭의 [정보데이터시스템]을 클릭합니다. 정보데이터시스템 화면에서 좌측 탭의 [종목정보]-[전종목 기본정보]를 클릭합니다. Step2. 네트워크 정보 확인 우클릭 [검사]를 클릭합니다. Network 탭을 클릭합니다. 다운로드 버튼을 클릭하고 CSV를 다운받습니다. 네트워크 탭에 아래 두 파일이 생깁니다. generate.cmd : OTP 생성 download.cmd : 생성한 OTP를 제출하고 파일을 다운로드함. Step3. OTP 받아오기 먼저 OTP를 받아옵시다. GenerateOTP를 눌러보면, 우측에 Request URL 이 있을 것입니다. POST 방식입니다. 스크.. 2021. 4. 7.
[R 크롤링] 9. GET 방식과 POST 방식의 차이 웹브라우저의 원리는 URL 주소를 통해 서버에 정보를 요청하고 받아오는 것입니다. 요청하는 방식을 method라고 하는데요. 대표적인 방법에는 GET 방식과 POST 방식이 있습니다. 웹브라우저를 공부하는 강의가 아니므로 크롤링의 관점에서 필요한 정도의 설명만 드리도록 하겠습니다. 1) GET 방식 - URL 에 요청내용을 추가해서 넣음. 물음표 ? 뒤에 내용을 넣음 - 예시 : 네이버 증시에서 코스피 현황을 보는 URL은 아래와 같음. 물음표 뒤에 code=KOSPI 를 붙여서 요청함. https://finance.naver.com/sise/sise_index.nhn?code=KOSPI 코스닥이 요청되면 아래와 같음. https://finance.naver.com/sise/sise_index.nhn?c.. 2021. 3. 24.
[R 크롤링] 8. 웹브라우저의 원리 간단 설명 이번시간에는 웹브라우저의 원리를 간단히 설명드리겠습니다. 교보문고 홈페이지에 들어가서 '베스트' 버튼을 클릭해봅시다. 우리가 위에서 '베스트' 버튼을 클릭하는 순간 아래 URL이 서버로 요청(Request)됩니다. 서버는 교보문고에서 운영하는 서버입니다. 외주를 줬을 수도 있구요. 서버는 하나의 컴퓨터입니다. 서버에는 우리가 요청하는 정보들이 저장되어 있습니다. 교보문고의 서버에는 분야별 종합베스트셀러 정보가 있고, 우리에 요청에 응답(Response)하여이 정보를 우리 컴퓨터로 보내주는 것입니다. (더 자세히는 저도 아직 모릅니다;) http://www.kyobobook.co.kr/bestSellerNew/bestseller.laf?orderClick=d79 우리가 '베스트'를 클릭했을 때, 이동된 화.. 2021. 3. 24.
R에서 시간데이터로 산점도 그리기 시간데이터를 다뤄야 하는 상황이 있습니다. 예를들어 아래와 같이 제품의 판매시간-판매량이 표로 정리되어 있고 이 표를 가지고 그래프를 그리고 싶다고 해봅시다. Time Sales_Volume 2018-10-21 08:23:12 1 2018-10-28 15:33:55 5 2018-11-02 13:23:52 12 2018-11-08 17:12:01 3 2018-12-12 10:08:01 7 판매량은 숫자벡터로 입력하면 되는데, 시간의 경우는 조금 복잡합니다. 먼저 시간을 문자열 벡터로 입력합니다. 입력한 뒤 산점도를 그리겠습니다. > SV=c(1,5,12,3,7) > time=c("2018-10-21 08:23:12","2018-10-28 15:33:55","2018-11-02 13:23:52","2018-.. 2021. 3. 18.
[R강의] 107. 히스토그램에서 density는 상대도수가 아닙니다. 먼저 히스토그램에서 density는 두가지가 있다는 사실을 알고 시작합시다. 하나는 히스토그램을 그린 결과로 출력되는 density와 옵션으로 입력하는 density입니다. 옵션으로 입력하는 density는 히스토그램 막대에 체크무늬를 만들어주는 것인데, 우리가 오늘 다루려고 하는 density는 히스토그램을 그린 결과로 출력되는 density입니다. 데이터를 하나 정의합시다. 키 데이터입니다. 계급값과 도수를 아래와 같이 갖도록 만들겠습니다. 160-170 : 4명 170-180 : 6명 상대도수는 아래와 같습니다. 160-170 : 0.4 170-180 : 0.6 데이터는 아래와 같이 만들면 됩니다. height=c(161,162,163,164,171,172,173,174,175,176) 히스토그램을.. 2021. 1. 7.
[R 텍스트마이닝] 영화 어바웃타임 대본 단어 빈도분석 ④ 소문자로 통일하기 [R 텍스트마이닝] 영화 어바웃타임 대본 단어 빈도분석 ④ 소문자로 통일하기 우리는 지난시간까지 어바웃타임의 자막을 단어단위로 나누어서 빈도분석을 했습니다. 몇가지 전처리를 했었는데, 아래와 같습니다. - raw 데이터에서 불필요 기호 제거- 단어데이터에서 불필요 단어 제거 빈도 결과를 받아보고 나서, 한가지 작업이 더 필요하다는 것을 알았습니다. 바로 대소문자입니다. 예를들어 Happy와 happy 는 같은 단어임에도, 빈도분석에는 다른 단어로 인식된 것입니다. 이 문제를 해결하기 위해 전체를 소문자로 바꾸는 코드르 추가하겠습니다. 아래와 같습니다. 빨간색으로 표시하였습니다. library(stringr)library(dplyr) #텍스트 불러오기raw=readLines("E:/ONE_DRIVE/One.. 2020. 12. 7.
[R 텍스트마이닝] 영화 어바웃타임 대본 단어 빈도분석 ③ 빈 문자열 제거 [R 텍스트마이닝] 영화 어바웃타임 대본 단어 빈도분석 ③ 빈 문자열 제거 지난시간에 불필요한 기호를 제거 했는데요. 빈 문자열 "" 이 남아있었습니다. 오늘은 빈 문자열을 제거해봅시다. 불필요한 기호를 제거하고 단어단위로 쪼갠 이후부터 진행하겠습니다. library(stringr)library(dplyr) #텍스트 불러오기raw=readLines("E:/ONE_DRIVE/OneDrive/21.textmining/abouttime/abouttime.txt") #불필요 기호 제거하기raw2=raw %>% gsub(pattern=".",replacement="",fixed=TRUE) %>% gsub(pattern="-",replacement="",fixed=TRUE) %>% gsub(pattern="?",r.. 2020. 12. 7.
[R 텍스트마이닝] 영화 어바웃타임 대본 단어 빈도분석 ② 불필요한 기호 제거 [R 텍스트마이닝] 영화 어바웃타임 대본 단어 빈도분석 ② 불필요한 기호 제거 지난 글에서 어바웃타임 대본의 빈도분석을 했었는데요. 불필요한 기호들이 있었습니다. 하이픈, 콤마, 쉼표, 물음표 등입니다. 오늘은 불필요한 기호를 제거한 뒤에 다시 빈도분석을 해봅시다. text파일을 불러온 부분부터 이어가봅시다. library(stringr)library(dplyr) #텍스트 불러오기 raw=readLines("E:/ONE_DRIVE/OneDrive/21.textmining/abouttime/abouttime.txt") > head(raw,5) [1] "" [2] "- I always knew we were a fairly odd family." [3] "- First there was me." [4] "-.. 2020. 12. 4.
[R 텍스트마이닝] 창세기 단어구름(wordcloud) 만들기 (3) 단어구름 만들기 R 텍스트마이닝창세기 단어구름(wordcloud) 만들기 (3) 단어구름 만들기 지난 코드에 이어서 설명하겠습니다. library(stringr)library(dplyr) #텍스트 불러오기gen=readLines("E:/ONE_DRIVE/OneDrive/21.textmining/bible_example/genesis.txt",encoding="EUC-KR") #단어 단위로 쪼개기gen_word = strsplit(gen ,split=" ") %>% unlist() #불필요한 단어 찾아 위치 저장하기rm_obj=which(str_detect(gen_word,":")|str_detect(gen_word,"")) #불필요한 단어 제거하기 gen_word_r1=gen_word[-rm_obj] 원본에서 불필요한 .. 2020. 10. 6.
[R 텍스트마이닝] 창세기 단어구름(wordcloud) 만들기 (2) 전처리 R 텍스트마이닝창세기 단어구름(wordcloud) 만들기 (2) 전처리 지난 글에서 창세기 텍스트를 불러왔습니다. gen=readLines("E:/ONE_DRIVE/OneDrive/21.textmining/bible_example/genesis.txt",encoding="EUC-KR") 오늘은 텍스트를 단어 단위로 쪼개고, 불필요한 단어를 제거하도록 하겠습니다. 단어단위로 쪼개기 위해 stringr 패키지를 설치하겠습니다. 파이프 연산자 사용을 위해 dplyr 패키지도 설치합시다. > install.packages("stringr")> install.packages("dplyr") 설치한 패키지를 불러옵시다. library(stringr)library(dplyr) 1. 단어 단위로 쪼개기 strsplit.. 2020. 10. 6.
[R강의] 105. attr 이 무엇인가요? R을 사용하다 보면 attr 을 보게될 때가 있습니다. 예를들어 x라는 벡터에 scale 함수를 적용하면, 결과 데이터 이외에 아래 sttr 이라는 내용이 출력됩니다. > x=1:5 > scale(x) [,1] [1,] -1.2649111 [2,] -0.6324555 [3,] 0.0000000 [4,] 0.6324555 [5,] 1.2649111 attr(,"scaled:center") [1] 3 attr(,"scaled:scale") [1] 1.581139 attr 는 attribute 의 약어입니다. 속성이라는 뜻입니다. 변수에 속성을 지정할 수가 있는데요. 그럴 경우 입력되는 정보입니다. 벡터를 하나 정의하고 속성을 입력해보겠습니다. v1=c(1,2,3,4,5) attr을 입력할건데요. 입력하는 방.. 2020. 10. 3.
[R강의] 104. 데이터프레임의 구조확인 str함수 vs glimpse 함수 [R강의] 104. 데이터프레임의 구조확인 str함수 vs glimpse 함수 데이터프레임의 구조를 확인하는 함수에는 두가지가 있습니다. 내장함수인 str 함수와, dplyr패키지의 glimpse 함수입니다. 데이터프레임 뿐 아니라, 모든 종류의 데이터의 구조를 확인해줍니다. 내장데이터인 CO2 데이터를 이용하여 비교하겠습니다. 먼저 str 함수입니다. > str(CO2)Classes ‘nfnGroupedData’, ‘nfGroupedData’, ‘groupedData’ and 'data.frame':84 obs. of 5 variables: $ Plant : Ord.factor w/ 12 levels "Qn1" 2020. 10. 2.
반응형