※ 해당 글은 R 기초를 복습하면서 작성한 자료입니다.
R의 데이터 구조
① 벡터: 하나의 스칼라값, 혹은 하나 이상의 스칼라 원소들을 갖는 단순한 형태의 집합.
→ c함수를 활용하여 선언 ( 하나의 Column=열 이라고 생각 )
x <- c(1, 10, 24, 40) #c함수를 이용하여 벡터 선언
②행렬: 행과 열을 갖는 m x n 형태의 직사각형에 데이터를 나열한 데이터 구조
→ [주의] 각 열이 같은 데이터 Type이여야 함
→ matrix 함수를 활용하여 선언
mx <- matrix(c(1,2,3,4,5,6), ncol=2)
→[참고] rbind와 cbind를 사용해 벡터를 행렬에 합칠 수도 있다.
( rbind= 행 결합 / cbind= 열 결합 )
r1 <- c(10,20)
rbind(mx, r1) # row bind, 행 결합
c1<- c(20,20,20)
cbind(mx, c1) # Column bind, 열 결합
③ 데이터 프레임: 행렬과 유사한 2차원 목록 데이터 구조
→ [행렬과 차이점] 각 열이 서로 다른 데이터 타입을 가질 수 있음
→ data.frame 함수로 선언
income <- c(100,200,150)
car <- c("kia", "hyundai", "toyota")
marriage <- c(FALSE, TRUE, FALSE)
mydata <- data.frame(income, car, marriage)
외부 데이터 불러오기
① csv 파일 불러오기
→ read.table 함수를 이용하여 R에 Data frame 형태로 불러옴
data1 <- read.table("파일경로\파일명.csv", header=T,sep=",")
→ [참고] read.csv를 써도 무방, 대신 사용 시 sep=","로 구분자 구분 X
② txt 파일 불러오기
→ sep=","로 구분자 구분 X
data2 <- read.table("파일경로\파일명.txt", header=T)
③ xls/xlsx 파일 불러오기
→ 2가지 존재, csv파일 변환 후 불러오거나 패키지 이용
→ ex) RODBC 패키지 이용
library(RODBC)
new <- odbcConnectExcel("파일경로")
yourdata <- sqlFetch(new,"Sheet이름")
close(new)
R 기초 함수
① 수열 생성하기
. rep(): 첫 번째 인수를 두 번째 인수만큼 반속하는 수자 벡터 생성
rep(1,3) # 1을 3번 반복하는 벡터 생성
. seq(): 첫 번째 인수부터 두 번째 인수까지 1씩 증가하는 수열을 숫자 벡터 생성
→ [옵션1] by=n 으로 설정하면 n씩 증가하는 벡터 생성 가능
→ [옵션2] length=m 으로 설정하면 전체 수열의 갯수가 m개가 되도록 자동적으로 증가하는 수열 생성
seq(1,5) # 1부터 5까지 1씩 증가하는 벡터 생성
seq(1,5,by=2) # by 옵션을 추가하여 2씩 증가하도록 변경
seq(1,5,length=7) # length 옵션을 추가하여 수열을 갯수 7개로 자동계산
② 기초적인 수치 계산
. 사칙연산 ( +, -, *, / )
→ 사칙연산을 수행하고자 할 때 기본적으로 백터의 크기는 같아야 함.
. 전치행렬과 행렬곱
→ 전치행렬= t함수 활용, 행렬곱 = %*% ( 행렬에 * 사용 시 단순히 스칼라 곱 반환 )
a <- c(2,7,3)
t(a) # a의 전치행렬
A <- a%*%t(a)
. 역행렬
→ solve 함수 사용 ( 단, 정방행렬이어야 함. )
solve(mx) #mx의 역행렬 계산
. 기초 기술 통계량 계산
→ mean(): 평균 / var(): 분산 / sd(): 표준편차 / sum(): 합 / median(): 중간값 / log(): 자연로그값
→ cov(): 공분산 / cor(): 상관계수 / sumary(): 사분위 수 계산 및 정보 요약
R 데이터 핸들링
b = c(1,2,3,4,5) 라는 벡터가 존재할 때,
① 벡터형 변수
→ b[2] : 2번째 원소에 해당되는 값만 불러옴
→ b[-4] : -를 붙이면 4번째 원소에 해당되는 값을 제외 후 불러옴
→ b[ c(2,3) ] : 벡터의 2, 3번째 위치 값을 선택
② 행렬/데이터 프레임 변수
→ 대괄호 안에 두가지 숫자가 추가될 뿐, 방식은 벡터형 변수와 동일.
mydata[3,2] # 3행 2열을 값을 불러옴
mydata[ ,2] # 2열의 값을 불러옴
mydata[4, ] # 4행의 값을 불러옴
③ 반복 구문과 조건문
. For 반복문 : i값을 하나씩 증가시켜가며 중괄호 { } 안의 구문은 반복실행
a = c() # 아무런 값도 포함되지 않은 벡터 생성
for(i in 1:9){
a[i] = i*i
}
. while 반복문 : 괄호 ( ) 조건 하에서 중관호 { } 안의 구문을 반복
x=0
while( x<5 ){
x=x+1
print(x)
}
. if ~ else 조건문: 특정 조건이 만족하는 경우 이후의 구문을 실행
StatScore <- c(10,11,2,14,11,9,7,15,6,7)
over10 <- rep(0,10)
# 10이상의 점수의 수 구하기
for(i in 1:10){
if ( StatScore[i] >= 10) over10[i] = 1
else over10[i] = 0
}
sum(over10)
. 사용자 정의 함수: function()을 이용, 함수를 정의하여 사용 가능
addto <- function(a){
isum = 0
for(i in 1:a){
isum = isum+i
}
print(isum)
}
addto(100)
기타 유용한 기능들
① paste() : 입력받은 문자열들을 하나로 붙여줌. ( 'sep=' 옵션을 통해 문자열 사이 구분자 추가도 가능 )
number <- 1:10
alphabet <- c("a","b","c")
paste(number,alphabet, sep=" to the ")
② substr() : paste와 반대로 주어진 문자열에서 특정 문자열을 추출함.
→ 해당 기능을 통하여 출력 결과를 간소화 할 수 있다.
country <- c("Korea", "Japan", "China", "Singapore", "Russia")
substr(country, 1, 3)
③ 자료형 데이터 구조 변환
→ 주어진 객체의 데이터 구조를 바꾸자 할 때 사용
가. as.data.frame(x) : 데이터 프레임 형식으로 변환
나. as.list(x) : 리스트 형식으로 변환
다. as.matrix(x) : 행렬 형식으로 변환
라. as.vector(x) : 벡터 형식으로 변환
마. as.factor(x) : 팩터 형식으로 변환
④ 문자열을 날짜로 변환
→ as.Date로 변환, 표준형식은 바로 변환되지만, 임의 형식은 Format을 지정해주어야 함.
⑤ 날짜를 문자열로 변환
'Programming > R _ Data' 카테고리의 다른 글
[ADP/4과목③] 데이터 분석 _ 결측값 처리와 이상값 검색 (0) | 2021.09.29 |
---|---|
[ADP/4과목②] 데이터 분석 _ 데이터 마트 (0) | 2021.09.27 |
[ R ] ggplot2 막대 그래프 그리기 ( geom_bar() ) (0) | 2021.05.24 |
[ R ] ggplot2 기하 그래프 그리기 ( geom_smooth() ) (0) | 2021.05.23 |
[ R ] ggplot2 다양한 방식의 산점도 작성 ( geom_point() ) (0) | 2021.05.23 |