일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 데이터시각화
- 유데미코리아
- 유데미
- 데이터프레임
- matplotlb
- 시각화
- DataFrame
- 유데미부트캠프
- 정렬
- 데이터분석
- 스타터스부트캠프
- 브루트포스 알고리즘
- numpy
- 데이터드리븐
- 그리디 알고리즘
- 파이썬
- 취업부트캠프
- 태블로
- 백준
- 판다스
- 넘파이
- 부트캠프후기
- 코딩테스트
- Leetcode
- Tableau
- 유데미큐레이션
- Til
- ndarray
- python
- pandas
- Today
- Total
Diary, Data, IT
[TIL] 11일차 TIL(20230220) - R 기초 본문
[TIL] 11일차 TIL(20230220) - R 기초
1. working directory 설정
- getwd() : 현재의 wd확인
- dir() : wd 내의 자료들 확인
- setwd('경로'): 경로를 입력하여 새로운 wd지정
2. 단축키 모음
- Ctrl + S : 파일 저장
- Ctrl + O : 파일 불러오기
- Ctrl + Shift + N: 새 소스파일
- Ctrl + Shift + C: 코드 주석화
- Ctrl + Shift + Enter: 소스코드 실행
- Shift + Alt + K: 모든 단축키 확인
3. 데이터 타입
- 숫자형(Numeric): 숫자를 나타내는 데이터 타입, 실수형 타입이지만 정수를 입력해도 우선 Numeric으로 처리
- 정수형(Integer): 정수값만을 나타내는 데이터 타입, 숫자형에 비해 메모리를 적게 차지함
객체 타입을 Integer로 지정하려면 값 뒤에 'L' 기입
- 논리형(Logical): 참/거짓을 나타내는 데이터 타입, TRUE/FALSE
- 문자형(Character): 문자 또는 문자열을 나타내는 데이터 타입
- Inf(Infinity): 무한히 큰 값을 나타내는 데이터 객체, 일반적인 계산에 사용가능
- NA: 결측값을 나타내는 데이터 객체
- NaN: 수치값으로 표현할 수 없는 값을 나타내는 데이터 객체 ex) 0/0
결측값으로 처리됨
4. R 자료구조
4.1 벡터
- 1차원 구조
- 데이터 타입이 동일한 값들의 모음
- 서로 다른 데이터 타입을 넣는다면 자동 형변환이 일어남
- c()함수를 통해 생성
ex) c(0.5, 0.6, 1, -5)
- vector('데이터 타입', length = 벡터 크기): 해당 데이터 타입과 크기를 가지는 벡터에 기본값을 넣어 생성
4.2 행렬
- 벡터의 집합, 2차원 구조
- 행과 열로 구성
- matrix(vector, nrow = 행크기, ncol = 열크기): 벡터를 지정하지 않으면 값이 빈 행렬이 만들어짐
- byrow = FALSE(default): 값을 행부터 채울지의 여부를 지정할 수 있음
4,3 배열(Array)
- dim(차원 크기)이 2이상인 자료구조
- array(vector, dim = (차원크기)): 차원크기가 3차원의 3행 3열이라면 (1, 3, 3)꼴로 작성
- Matrix는 dim크기가 2인 array
4.4 리스트(List)
- 서로 다른 데이터 타입이 존재하는 값들의 모음
- list()
4.5 데이터프레임
- List의 집합으로 행,열로 구성
- 각 행은 list, 각 열은 vector로 취급됨
- 열 별로 다른 데이터 타입 저장 가능
- data.frame(vector1, vector2, ...): 벡터별로 하나의 열, 벡터명이 칼럼명으로 사용
5. NULL vs NA
- NULL: 값을 넣고싶지 않고, 빈 객체를 선언만 하고 싶을 때 사용하는 타입
- NA: 값이 존재해야 하는 공간에 값이 없을 때 사용하는 타입
6. 내장함수
6.1 as함수
- 데이터 형식을 강제로 변환시키는 함수
- as.numeric, as.character. as.logical
- 데이터 우선순위가 낮은 타입 -> 높은 타입으로 변화는 모두 가능
- 데이터 우선순위가 높은 타입 -> 낮은 타입으로 변화는 일부 가능
ex) 0초과의 수 = T, 0이하의 수 = F
- 데이터 우선순위: character > numeric > logical
6.2 데이터 생성 함수
- seq(length, from, by): from부터 by씩 증가하는 length개의 숫자로 이루어진 벡터 생성
- rnorm(n, mean, sd): 평균이 mean, 표준편차가 sd인 정규분포를 따르는 n개의 숫자로 이루어진 벡터 생성
- runif(n, min, max): [min, max]범위 사이의 n개의 난수로 이루어진 벡터 생성
7. 실습 예제
age <- c(30, 33, 35, 30, 68, 33) # 나이 벡터 생성
job <- c("무직", "서비스", "관리직", "관리직", "은퇴", "관리직") # 직업 벡터 생성
marital <- c("결혼", "결혼", "미혼", "결혼", "사별", "결혼") # 결혼 유무 벡터 생성
balance <- c(1787, 4789, 1350, 1476, 4189, 3935) # 은행 잔고 벡터 생성
campaign <- c("휴대폰", "휴대폰", "휴대폰", "Unknown", "유선전화", "휴대폰") # 상담 매체 벡터 생성
y <- c(F, F, F, F, T, T) # 상담 결과 벡터 생성
result <- data.frame(age, job, marital, balance, campaign, y) #데이터 프레임 생성
print(result)
1) job칼럼의 은퇴를 무직으로 대체하고,
2) marital 칼럼을 logical값으로 관리하기(결혼 값은 T, 나머지 값은 F)
3) 수정된 결과물은 result_new에 담아 출력
install.packages('stringr')
library(stringr)
job_new = str_replace(job, '은퇴', '무직')
marital_new = str_replace(marital, '결혼', 'T')
marital_logical = as.logical(marital_new) # 논리형으로 변
marital_logical[is.na(marital_logical)] = FALSE #결측치 값을 FALSE로 변경
result_new <- data.frame(age, job_new, marital_logical, balance, campaign, y)
소감 및 정리
R을 오랜만에 다시 다뤄봤는데 문법들이 어렴풋하게 기억이 나는 것 같으면서도 새롭게 느껴졌다. 특히 벡터를 c()로 감싸서 지정해주는 문법을 완전 잊고 있었다는 사실이 약간 충격이었다ㅎㅎ.. R에서 정말 기초적인 내용인데 오랫동안 쓰지 않다보니 기본기가 많이 무너진 것 같았다ㅠㅠ 오늘 강의를 수강하며 기초적인 내용을 충실히 다지는 계기가 되었고, 다시 손에 약간 익기 시작했다. 내일은 본격적으로 R을 사용하는 법에 대해 배워서 더 기대가 된다.
'STARTERS > TIL' 카테고리의 다른 글
[TIL] 13일차 TIL(20230222) - ggplot, 가설검정, 상관계수 (0) | 2023.02.23 |
---|---|
[TIL] 12일차 TIL(20230221) - 데이터 전처리, 시각화, dplyr (1) | 2023.02.21 |
[TIL] 10일차 TIL(20230217) - RANK, ROLL UP, 공공데이터를 이용한 SQL 실습 (0) | 2023.02.19 |
[TIL] 9일차 TIL(20230216) - 집계함수, 문자열/날짜 자료형, 서브쿼리, JOIN (0) | 2023.02.16 |
[TIL] 8일차 TIL(20230215) - DBMS이론 및 SQL기초, 조건절 (0) | 2023.02.15 |