[R] rlang으로 하는 동적 변수 참조와 환경(Environment)
·
Data Science/Manipulation
다른 블로그에도 관련된 내용이 없거나 적고 스스로 rlang과 관련된 내용 정리가 필요한 것 같아 포스팅을 올리게 되었습니다. mpg라는 데이터프레임에서 "model"이라는 열을 기준으로 그룹화를 한다면 아래와 같이 작성할 수 있습니다.mpg |> group_by(model) 그렇다면 아래 코드와 같이 그룹화 변수를 따로 선언하고, 그 객체를 전달하면 어떨까요?group_vars group_by(group_vars)오류가 발생하네요? 도대체 무슨 차이가 있어서 이런 차이를 만드는 것일까요?group_by 함수는 인자로 받는 값을 변수명이라고 생각하고, 데이터 프레임에서 인자로 받은 값과 받은 열을 찾습니다.그래서 첫번째 코드에서는 mpg에 존재하는 "model"이라는 열을 기준으로 그룹화를 진행하는 것..
[R] 사용자 정의 함수 관련 잡기술
·
Data Science/Manipulation
1. match.call간혹 함수를 짜다보면 입력한 인수를 사용했는지 확인이 필요 할 때가 있습니다.예를 들어, 데이터 프레임에서 특정 열의 Five-Number Summary($\min$, $q_1$, $m$, $q_3$, $\max$)를 해당 데이터 프레임의 이름과 함께 출력하는 함수를 아래와 같이 작성해보았습니다.fivenum_col  결과는 에러가 발생하는데요!왜냐하면, df를 출력하면 iris의 데이터프레임을 출력하기 때문에 문자열 출력 함수와 호환되지 않기 때문입니다.이런 에러를 방지하기 위해서 match.call 함수를 사용하는데 인자와 입력된 글자를 호출하는 함수입니다.fivenum_col   2. 익명함수(anonymous functions)파이썬의 람다 함수처럼 익명 함수를 지원합니다...
[EDA] 상관계수 시각화 (Visualization of Correlation Coefficient) with R
·
Data Science/Manipulation
예전 포스팅(https://moogie.tistory.com/145)에서 여러 종류의 상관계수에 대해 알아봤었는데, 이번에는 상관계수 시각화에 대해 포스팅합니다. [EDA] Correlation (상관계수) - Pearson, Spearman, Kendall, XI안녕하세요! 이번 포스팅에서는 상관계수에 대해 좋은 논문이 있어서 간단하게 소개드립니다. 캐글이나 데이콘에서 데이터 탐색 파트를 살펴보면 Pearson 상관계수나, Spearman 상관계수를 많이 사moogie.tistory.com 1. 히트맵 형식의 시각화기본적으로 데이터로부터 상관계수 시각화를 하려면 각 변수간의 상관계수를 구해야합니다.R에서는 cor함수를 사용하여 상관행렬을 구할 수 있지만 matrix 클래스의 객체이므로 시각화를 위해 적..
[R] slice함수 : 위치를 이용한 행 선택 (Subset rows using position)
·
Data Science/Manipulation
안녕하세요. 이번 포스팅에서는 생각보다 자주 사용하는 함수를 소개하려고 합니다.tidyverse 패키지에서는 주로 filter 함수를 이용해서 원하는 행을 가져오는데요. 이번에 소개할 함수는 행의 위치에 맞는 데이터를 가져오는 dplyr 패키지의 slice 계열 함수입니다.slice() lets you index rows by their (integer) locations. It allows you to select, remove, and duplicate rows. It is accompanied by a number of helpers for common use cases:( slice()를 사용하면 행을 (정수) 위치별로 인덱싱할 수 있습니다. 행을 선택, 제거 및 복제할 수 있습니다. 일반적인 사..
[Data Science With R] 16. 리스트열(List-column)을 이용한 모델
·
Data Science/Manipulation
안녕하세요. R을 활용한 데이터 사이언스를 포스팅한지 벌써 6개월 정도 되었네요. "R을 활용한 데이터과학(R4DS)" 책은 3년전부터 공부한 책이였지만 중간중간 어려서워서 나중에 다시 돌아와서 보기도 했었고, 5번정도 복습을 했지만 다시 볼때마다 유용한 내용이 많이 있었습니다. 특히 다양한 경험과 배움속에서 R 프로그래밍 역량을 좀 더 높여준 책이라서 저자와 번역가님에게 정말 감사드립니다. 하여튼 해당 책을 위주로 요약해서 포스팅하는 것은 이번이 마지막이지만, 요약 하지 않은 파트도 정말 도움이 많이되어 R을 사용한 데이터 사이언스에 관심있으신 분들은 한번쯤 구매해서 읽어보시면 많은 도움을 받을 수 있지 않을까 싶습니다. Data Science With R의 마지막 포스팅은 리스트-열입니다. 데이터프레..
[R] all_of와 any_of를 사용한 변수 선택 (조건을 이용한 선택 추가)
·
Data Science/Manipulation
데이터 분석을 공부하고 있다면 어느정도 겪어봤을 문제인 변수 선택에 대한 내용입니다. 주로 상관계수를 구하기 위해서 데이터가 모두 수치형이여야 하는데 데이터 중 일부가 다른 유형이라서 에러가 뜨는 경우가 있을 겁니다. 또한, 작은 데이터 셋 같은 경우에는 일일이 지정해서 변수선택을 할 수 있겠지만 변수의 수가 20개, 30개가 넘어가면 골치아픕니다. 이럴 때 복잡하게 코딩하지 않고 간단하게 원하는 데이터만 추출할 수 있습니다. 아래 코드와 같이 iris 데이터의 상관계수를 구하려고하면 에러가 발생합니다. "cor(iris)에서 다음과 같은 에러가 발생했습니다:'x'는 반드시 수치형이어야 합니다" cor(iris) # Error! 그 이유는 iris의 Species열이 수치형 자료가 아닌 문자형 자료가 입..
[Data Science With R] 15. Modelr을 활용한 모델 생성
·
Data Science/Manipulation
1. 개념 목표 : 모델을 이용해 데이터를 잔차와 패턴으로 분리 시작 : 데이터 시각화 후 변수들 표현할 수 있는 모델 형태를 정의(선형, 비선형) 선형모델 모델링 : y = ax + b 시각화 : [함수] geom_abline( ) + [인자] intercept, slope 과정 : 모델 정의 > 잔차(실제값-예측값) 계산 > 잔차요약(MSE, MAE 등등) > 모델 선택 참고 glm함수, loess함수 등을 사용하여 (비)선형 모델을 생성 optim함수를 사용해 수치 최적화를 시도할 수 있다. 2. 예측값과 잔차를 구하는데 유용한 함수 modelr::expand_grid( ) : 중복을 포함한 각 변수의 모든 경우의 수의 조합을 생성 modelr::data_grid( ) : 각 변수에서 고유한 값들의..
[Data Science With R] 14. 반복수행 with purrr
·
Data Science/Manipulation
1. 명령형 프로그래밍 for 루프 : 출력 + 시퀀스 + 본문 출력 : vector(type, length)로 길이가 주어진 긴 벡터 생성 시퀀스 : 자료가 데이터 프레임인 경우 1:legnth(data)보다 seq_along(data)가 안전 while 루프 for문과 다르게 시퀀스의 길이가 명확하지 않을 때 유용하다. 출력 길이를 모르는 경우 : 결과를 리스트에 저장후 unlist 혹은 purrr::flatten_* 함수를 사용 긴 문자열이 출력되는 경우 : 문자형 벡터에 저장후 paste 혹은 str_c 함수를 사용해 단일 문자열로 결합 큰 데이터 프레임을 생성하는 경우 : 결과를 리스트에 저장후 bind_rows 및 bind_cols 함수를 사용 2. 함수형 프로그래밍 map(data, fun,..