반응형

R 39

R 다른 코드 스크립트 불러올 때

작업을 하다보면 R코드가 너무 길어서 복잡할 때가 있는데, 코드를 좀 분리하는 게 편하죠. 일단 기존 코드로 짜다가, 너무 길다 싶은 부분은 새로운 창으로 옮겨서 짠 다음에, 기존 코드에 자연스럽게 부르는 형식을 취할 수도 있습니다. 그럴 때 쓰이는 게 source라는 명령어 입니다. source("C:/Users/nobody/Documents/R/MyScript.R") 위는 한 예이고 (당연히 개인 계정에 맞춰 폴더 이름과 R script 이름은 바꿔야겠죠?), 저렇게 치면 R 폴더 밑에 있는 MyScript.R이라는 코드를 돌려라 하는 명령어가 됩니다.

R/R basic 2022.08.18

조건 걸어 평균값 구하기

그냥 평균값 구하는 거야 mean을 쓰면 되는데 예를 들어 어떤 칼럼이 뭐 이상일 때 다른 칼럼의 평균값을 구해라, 뭐 이런 식의 조건이 들어가면 R에서는 직관적으로 명령문이 잘 안 나옵니다. stata나 sas는 이런 게 그냥 한 번에 쓸 수 있는데, R은 좀 솔직히 이런 간단한 것도 조금 불필요한 수식이 있죠. 어쨌든 예를 들어 df라는 데이터프레임에 T10Y2Y라는 칼럼 값이 음수일 때 Close라는 칼럼의 평균 값을 구하라는 명령어를 적으려면 아래처럼 하면 됩니다. mean(df[df$T10Y2Y < 0, "Close"], na.rm=TRUE) 여기서 중요한 게 na.rm인데 결측값을 무시하라는 얘기입니다. 다른 통계프로그램에서는 자연스럽게 결측값을 무시하는데 R은 그렇지 않으니, 결측값이 있고 ..

R/R basic 2022.08.17

missing value(결측값, 결측치) 0 (혹은 다른 값)으로 바꾸기

데이터는 많은 경우 missing value(결측값)들이 많은데요. 이걸 drop 할 수도 있습니다만 (아래 링크 참조), 열(row) 제거하기 (tistory.com) 열(row) 제거하기 앞서 칼럼(column)제거하는 글을 올렸는데 정작 열을 제거하는 법은 올리지 않았네요. 특정 열(column)만 선택 (keep) 혹은 제거(drop)하기 (tistory.com) 특정 열(column)만 선택 (keep) 혹은 제거(drop)하기 R에.. approximation.tistory.com 경우에 따라서 그냥 0 혹은 다른 값으로 바꾸고 데이터를 유지하고 싶은 경우도 있을 겁니다. 그럼 결측값을 특정 숫자로 바꾸는 명령어는 무엇일까요? 의외로 매우 간단합니다. 만약 df라는 데이터프레임에 모든 칼럼의 ..

R/R basic 2022.07.28

날짜 데이터 읽기 (3): 연, 월, 일 형태는 맞춰주는 게 좋다

앞서 R 날짜 데이터 기본에 대해 일부 알아봤고, 날짜 데이터 읽기 (1): 문자를 날짜로 데이터 변환 (as.Date) (tistory.com) 날짜 데이터 읽기 (1): 문자를 날짜로 데이터 변환 (as.Date) R에서 날짜 변수들이 있는 경우가 종종 있는데요. 예를 들어 특정 칼럼 항목에 2020-01-01 같은 문자 값이 들어가 있으면 R이 무조건 날짜라고 인식하는 게 아니라 이건 날짜 변수야 라고 지정해주 approximation.tistory.com 이어서 칼럼이 연, 월 따로 떨어져 있을 때 어떻게 하면 둘이 합치는지에 대해서도 얘기했는데, 날짜 데이터 읽기 (2): 두 개 이상 날짜 칼럼 합쳐서 변환 (with, sprintf) (tistory.com) 날짜 데이터 읽기 (2): 두 개 ..

R/R basic 2022.07.26

열려 있는 데이터(혹은 파일) 제거하기 #2: rm 함수

앞서 R 창에 열려 있는 파일 제거하는 법으로 rm 함수를 쓰는 법을 배웠습니다. R에 지금 열려 있는 데이터 지우기 (tistory.com) R에 지금 열려 있는 데이터 지우기 R로 작업을 하다보면 필요없이 많은 데이터 (그게 데이터프레임 형태든 list이든)가 있는 경우가 있습니다. R 환경 창을 보면 필요없는 데이터들이 우르르 떠 있는 경우가 있죠. 메모리 용량 너무 approximation.tistory.com 근데 rm으로 파일명 일일이 치기가 귀찮을 때가 있죠? 예를 들어 R에 있는 파일이 df2013, df2014,... df2030까지 있다고 할 때, 이걸 rm(df2013), rm(df2014) 이렇게 일일이 치기 사실 좀 그렇고.. 그렇다고 rm(list=c("df2013", "df20..

R/R basic 2022.07.01

문자 앞이나 뒤에 억지로 숫자나 문자를 붙여야 할 때: str_pad 함수

칼럼에 있는 문자 데이터 앞이나 뒤에 일괄적으로 숫자나 문자를 붙이고 싶을 때가 있습니다. 예를 들어 한국 주식 시장 코드는 6자리인데, R이 앞에 있는 0을 무시하고 그냥 숫자만 읽을 때가 있죠. 예를 들어 삼성전자 주식코드는 005930인데, R에서는 5930으로 나오는 경우. 이 때 앞에 0을 어떻게 일괄적으로 추가할 수 있을까요? df라는 데이터에 Stock이라는 칼럼을 바꾼다고 하면, 아래와 같이 하면 되지 않을까? 생각할 수도 있을 것입니다. paste0("00", df2$Stock) 그런데 이 경우는 문제가 있죠? 삼성전자의 5930은 005930으로 바뀌겠지만 앞이 0이 아닌 131220 같은 주식 코드의 경우 00131200이 되면서 무려 8자리가 되게 됩니다. 자릿수는 유지하되, 빈 자..

R/R basic 2022.06.25

정렬(오름차순, 내림차순)할 때 쓰는 함수: arrange

df%arrange(Stock) 앞서 칼럼 값을 일정 기준으로 정렬할 때는 쓰는 기본적인 법을 얘기했는데요. 그 때는 order라는 함수를 썼습니다. [R기본] R로 데이터프레임 만들기, 행&열 뽑기, 부분 집합, 그리고 순서 (tistory.com) [R기본] R로 데이터프레임 만들기, 행&열 뽑기, 부분 집합, 그리고 순서 #기본적으로 가공의 데이터를 만듭니다. c는 복수의 데이터가 들어갈 때 반드시 써줘야 합니다. a #데이터 프레임 형태로 바꿉니다. 자동으로 a, b, c를 칼럼으로 인식합니다. 단 이는 a, b, c수가 일 approximation.tistory.com 사실 이보다 훨 간단한 함수가 arrange라는 함수인데, 이건 dplyr (혹은 tidyverse)안에 있습니다. 그래서 이 ..

R/R basic 2022.06.23

연속된 숫자 만들기 rep 함수

숫자가 연속되게 나오는 데 가장 유용한 함수가 rep함수인데, 의외로 쓸 데가 많다. 예를 들어 rep(1:5) 이렇게 하면, 1, 2, 3, 4, 5가 나오는거고, 이걸 만약 10번 반복하고 싶다. 그러면 옆에 times를 붙이면 된다. rep(1:5, times=10) 그러면 1, 2, 3, 4, 5, 1, 2, 3, 4, 5.. 이렇게 10번 될 때까지 반복. 만약 1이 연달아 세 번 나오고 그 다음에 2가 연달아 세 번 이런 식으로 하려면 다음과 같이 each를 붙이면 된다. rep(1:5, each=3) 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5가 결과가 될 것이다. 그런데 연속되는 숫자가 아니라 특정 숫자 그룹 예를 들어 3, 5, 7이라는 숫자가 5번 반복..

R/R basic 2022.06.21

tidyverse 하나면 웬만한 것 커버된다

일반적으로 R을 시작할 때 깔아야 하는 기본적인 library들이 있는데 예를 들어 그래프 만들 때 쓰는 ggplot2나 data cleaning할 때 필요한 dplyr 등이 있다. 근데 이런 거 일일이 다 깔 필요없이 그냥 tidyverse library 하나 깔면 거기에 ggplot2, dplyr가 다 포함되어 있다. tidyverse에 포함된 package로는 ggplot2, dplyr, tidyr, readr, purr, tibble, stringr, forcats 등이 있다. Tidyverse packages Tidyverse packages Installation and use Install all the packages in the tidyverse by running install.pack..

R/R basic 2022.06.18

한국어로 파일 추출이 안 될 때 (sys.setlocale)

R로 작업을 하고 csv file로 뽑을 때 칼럼 안에 있는 한국어가 깨지는 경우들이 종종 있다. 이건 사실 R의 외국어 관련 고질적인 문제이기도 한데, 임시 방편으로 아래와 같이 명령어를 치고 데이터를 export를 하면 된다. 그렇게 하고도 엑셀 등에서는 깨지는 경우가 많은데, 검색해보니 메모장이나 아니면 다른 text 읽는 프로그램으로 열어보라고 하기도. Sys.setlocale("LC_CTYPE", "ko_KR.UTF-8") write.csv(df2,'정리.csv',fileEncoding = "UTF-8") 위 명령문은 df2라는 R 데이터프레임을 정리.csv라는 파일로 추출 (내보내기)하되 한국어 패치를 이용하라고 한 것.

R/R basic 2022.06.15
반응형