1. 변수
변수 이름 생성 규칙
- 사용 가능 : 알파벳, 숫자, _ , . 등
- 사용 불가 : -
- 숫자로 시작하면 안 된다.
변수값 할당 규칙
- < - , <<- , = dustkswk tkdyd
- =는 때에 따라 사용할 수 없는 경우가 있음
- 보통 < - 를 많이 사용함
2. 함수 호출 시 인자 지정
- R명령의 대부분은 함수 호출
- ex) Data(a, b, c=3 , d = 4
- a, b, c, d 4개의 인자 지정
- c, d, 에는 기본값이 지정되었으므로 생략 가능
3. 스칼라
숫자
- 스칼라 : 단일 차원의 값(1,2,3,…)
- R의 기본 데이터 타입은 벡터
- 스칼라 데이터는 길이가 1인 벡터(즉, 길이가 1인 배열)
- 숫자
- 정수, 부동소수 등을 숫자형 데이터 타입 형식 지원
NA와 NULL
- NA : 변수 값을 모를 때 사용(NULL과 구분해서 사용)
- is.na() : na 값이 있는지 확인
- NULL : NULL 객체를 뜻함
- 변수가 초기화되지 않았을 때 사용
- is.null() : null 값이 저장되어 있는지 확인
문자열
- 문자열 : C 등의 언어에서 볼 수 있는 한 개 문자에 대한 데이터 타입(int, char,…이 없음)
- 문자열로 모든 것 표현이 가능함
- ‘ ‘ 또는 “ “ 사용
진릿값
- &(AND) , |(OR) ,!(NOT) 연산자 사용
- TRUE, FALSE는 예약어(다른 값 할당 불가)
- T, F는 각각 true와 false로 초기화되어 있는 전역변수
- T에는 false 값 할당 가능
- &, | 와 && , || 의 차이
- 한 개의 경우는 벡터(배열) 끼리 연산할 때, 요소별로 계산
- 두 개의 경우는 두 개의 진릿값끼리 연산하기 위함
c(T,T) & c(T,F)
c(T,T) && c(T,F)
팩터
- 범주형 데이터(자료)를 표현하기 위한 데이터 타입
- 범주형 데이터 : 사전에 정해진 특정 유형으로만 분류
- 명목형 : 데이터 값의 크기 비교 불가
- 순서형 : 값에 순서를 둘 수 있음
- 레벨(level) : 범주형 변수가 담을 수 있는 값의 목록
- 예) 방의 크기를 대, 중, 소 로 나타낼 때,
- 특정 방의 크기를 ‘대’로 나타내는 것 → 범주형 데이터
- 대,중,소 → 레벨
팩터 관련 함수
- factor : 팩터 값 생성
- nlevels : 레벨의 개수 반환
- levels : 레벨의 종류 반환
- is.factor : 팩터 인지 판단
- ordered : 순서형 팩터 생성
- is.ordered : 순서형 팩터인지 판단
f <- factor("s",c("s","t"))
f
nlevels(f)
levels(f)
ordered("x",c("x","y","z"))
4. 벡터
벡터 생성하기
- 배열의 개념
- 한 가지 스칼라 데이터 타입의 데이터 저장 가능
- 각 셀에 이름을 부여하여 이름을 통한 접근 가능
- 벡터는 중첩이 불가능
- 벡터 안에 벡터를 생성하면 단일 차원의 벡터로 변경
벡터 관련 함수
- c : 벡터 생성
- names : 객체 이름 반환
- names ← : 객체 이름 저장
a <- c(10,20,30)
names(a) <- c("a","b","c")
a
데이터 접근
- 벡터 데이터 접근 문법
- x[n] : 벡터 x의 n번째 요소(n은 숫자 또는 이름)
- x[-n] : n번째 요소 제외한 나머지
- x[start:end] : start부터 end까지의 값
- 벡터 길이 관련 함수
- length : 객체의 길이를 반환
- NROW : 배열의 행 또는 열의 수 반환
벡터 연산자
- value %in% x : 벡터 x에 value가 저장되어 있는지 판단
- x+n : 벡터 x의 모든 요소에 n의 값 더함 (*, / , - 등 사용 가능)
"x" %in% c("x","y","z")
시퀀스 생성
- 생성 문법
- seq(from, end , by) : from부터 end까지의 숫자를 지정한 벡터 반환
- by는 생략 가능(기본값 1)
- start : end 축약 형태로 사용 가능.
seq(1,5)
seq(1,5,2)
seq(5,1)
반복된 값 저장
- 생성 함수
- rep(x, times, each)
- tiems : 전체 벡터의 반복 횟수
- each : 개별 값의 반복 횟수
rep(1:2, tiems = 4)
rep(1:2 , each = 3)
rep(1:2 , each = 2 , times = 2)
5. 리스트
리스트 생성
- 리스트 : (키 , 값) 형태의 데이터를 담는 연관 배열
- 다른 언어에서 딕셔너리 형태
- 벡터와 달리 값이 서로 다른 데이터 타입 담을 수 있음
- “이름” 키에 “홍길동”(문자열)
- “학번” 키에 20182711(숫자)
생성 함수
- list(key1 = value1 , key2 = value2,…)
lst <- list(names = "data" , num = c(10,20,30))
lst
6. 행렬
행렬 생성
- 생성 함수
- matrix(데이터, 행의 수(nrow), 열의 수(ncol) , byrow = F, dimnames = NULL)
- byrow를 TRUE로 설정하면 행우선, FALSE일 경우 열 우선
- 생략할 시에는 FALSE로 간주
matrix(c(10,20,30,40),nrow = 2)
matrix(c(10,20,30,40))
a <- matrix(1:4 ,ncol = 2)
rownames(a) # 이름이 없으므로 NULL 반환
rownames(a) <- c("one","two")
a
colnames(a) <- c("one","two")
a
행 우선으로 지정하여 행렬 생성하기
matrix(c(1:9),nrow = 3 , byrow = T)
행과 열에 명칭 부여하기
matrix(c(1:9),nrow=3,dimnames = list(c("A","B","c"),c("D","E","F")))
데이터 접근
- 문법
- A[ridx cidx] : 행렬 A의 ridx행, cidx열에 저장된 값.
- 이때 ridx나 cidx에 벡터를 사용해 여러 값을 지정 가능함
- ridx나 cidx 중 하나를 생략하면 전체 행 또는 열 의미
a <- matrix(c(1:9),nrow = 3 , byrow = T)
a
a[1,2]
a[3,1]
a[,1:2]
a[1:2,]
행렬 연산
- 연산자
- A + x : 행렬 A의 모든 값에 스칼라 x 더함(-,*,/ 이용가능)
- A + B : 행렬 A와 행렬 B의 합. 행렬 간의 차는 -
- A%*%B : 행렬 A와 B의 곱
a <- matrix(c(1:9),nrow = 3)
a
a*3
a%*%a
a-a
7. 배열
배열 생성
- 생성 함수
- array(data = NA , dim = length(data), dimmames = NULL)
- data : data를 저장한 벡터
- dim=length(data) : 배열의 차원 / 지정하지 않으면 1차원 배열임
- dimnames : 차원의 이름
- array(data = NA , dim = length(data), dimmames = NULL)
array(11:20,dim = c(2,5)) # 2X5 차원의 배열
8. 데이터프레임
데이터프레임 생성
- 데이터 프레임 : 처리할 데이터를 엑셀의 스프레드시트와 같이 표 형태로 정리
- data.farme : 데이터 프레임 생성
- str : 임의의 R 객체의 내부 구조(structure)를 보임
- 데이터 프레임 사용 문법
a <- data.frame(x = c(1,2,3,4,5) , y = c(6,7,8,9,10),z = c("a","b","c","d","e"))
a
str(a)
이미 정의된 프레임에 값 변경하기
a$x
a$x <- 11:15
a
새로운 컬럼 추가하기
a$w <- c(1:5)
a
행, 컬럼 이름 지정하기
colnames(a) <- c("num1","num2","num3","num4")
a
rownames(a) <- c(11:15)
a
프레임에 접근하기
a
a[2,]
a[2,1]
a[-2,-2]
a[,c("num1","num2")]
drop 옵션 사용 (형 변환 원치 않을 때)
특정 컬럼 선택하기
a <- data.frame(x = 1:3 , y = 4:6 , z = 7:9)
a
a[,names(a) %in% c("y","x")]
연산자 사용 해서 특정 컬럼 제외하고 선택하기
a[,!names(a) %in% c("x")]
- 데이터 프레임에는 분석할 데이터 양이 많음
- 따라서, 손쉽게 살펴보는 방법이 필요
- 유틸리티 함수 제공
head : 객체 처음 부분 반환
tail : 객체의 뒷부분 반환
View : 데이터 뷰어를 호출
- 3가지 호출 방식의 출력 예시
a <- data.frame(x = 0:100)
head(a)
tail(a)
head(a,8L)
View(a)
9. 타입 판별
- 데이터 처리를 위해 여러 함수 호출 시, 반환된 결과의 타입이 무엇인지 분명하지 않음
- 타입 판별을 통해 데이터 타입을 손쉽게 판단 가능
- 타입 판별 함수
클래스 구하기
데이터 타입 판별하기
10. 타입 변환
- R의 형 변환은 암시적으로 발생할 수 있음
- 때에 따라 전혀 예상치 못한 곳에서 형 변환 일어남
- ex) 파일에서 문자열을 불러들였을 때 data.frame()으로 데이터 프레임을 생성하면서 stringAsFactor = FALSE를 지정하지 않으면 문자열이 character(문자열 벡터)가 아니라 팩터가 된다
타입 변환 함수
문자열 벡터를 팩터로 변환 후, 다시 벡터로 변환하기
행렬을 데이터 프레임으로 변환하기
리스트를 데이터 프레임으로 변환하기
'R 프로그래밍' 카테고리의 다른 글
3. 조건문, 반복문, 함수 (0) | 2023.04.19 |
---|---|
1. R 환경설정 및 기초 문법 (0) | 2023.04.17 |