본문 바로가기

기타/R Programming

R 프로그래밍 기초 필수 개념 총정리하기

728x90

R 프로그래밍은 파이썬과 달리 통계학 위주로 발전했기 때문에 조금 더 간단하다.

파이썬은 웹 등 다양한 것이 가능한 범용 언어이다.

수치 분석 통계 분석에 유리한 언어이다.

 

우선 다운로드해봅시다.

아래 페이지에 가서 운영체제에 맞게 다운로드하시면 됩니다.

cran.r-project.org/bin/windows/base/

 

Download R-4.0.3 for Windows. The R-project for statistical computing.

If you want to double-check that the package you have downloaded matches the package distributed by CRAN, you can compare the md5sum of the .exe to the fingerprint on the master server. You will need a version of md5sum for windows: both graphical and comm

cran.r-project.org

1. 워킹 디렉터리 설정하기.

getwd() 명령어는 워킹 디렉터리를 위치를 얻을 수 있습니다.

데이터를 불러들일 때 가장 유리한 장소입니다.

데이터를 불러올 때 path를 입력하지 않으면 워킹 디렉터리에서 찾습니다.

setwd()를 통해 워킹 디렉터리를 바꿀 수 있습니다.

 

2. 파일 만들고 불러오는 방법.

좌측 상단의 파일을 누르고 새 스크립트를 누릅니다.

'

myfunction <-function() {
}
'

이렇게 입력하고'myfunction'라는 이름으로 저장해줍니다.

console창으로 돌아가

'source('myfunction.R')'을 하고 

'ls()'를 하면

[1] "myfunction" 어떤 함수 객체가 생성되어 있는지 확인할 수 있습니다.

 

3. 변수 저장 방법과 출력

python은 '='을 사용하지만 R은 '<-'을 통해 합니다.

출력은 print()로 합니다.

다만 출력이 조금 다르게 나옵니다.

'

> x <-1
> print(x)
[1] 1

'

[1]이 나오는데 이는 벡터의 첫 번째 값이라는 의미입니다.

파이썬과의 차이점입니다.

 

4. 데이터 타입과 객체

다섯 가지 타입이 있습니다.

문자열, 수치형(실수형), 정수형, 복소 수형, boolean이 있습니다.

기본 객체형은 벡터로 벡터는 한 가지 형태의 타입만을 가질 수 있습니다.(python의 np.array 유사하다.)

예외적으로 리스트 형태를 제공하기도 한다.

객체의 속성에는 name, dimnames, dimensions, class, length, 다른 사용자 정의 이 있다.

'attributes()'로 객체의 속성에 접근할 수 있다.

 

5. 숫자형 데이터

일반적으로 R에서 숫자들은 수치형(float형)으로 취급된다.

정수형으로 바꾸기 위해서는 뒤에 'L'을 붙여야 한다.

inf는 무한대를 의미한다.

nan은 not a number로 missing value를 의미한다.

 

6, 벡터 만들기

'c()'함수를 사용해 만들 수 있다.

벡터는 같은 성질의 자료형만 존재할 수 있다.

만약

'

x <-c(1.7, 'a')

'

위와 같이 입력하게 되면 1.7이 '1.7'로 강제로 바뀌게 된다.

이를 coercion이라 부른다.

 

'x <-0:6'는 x에 0부터 6까지의 숫자를 넣어준다.

 

'as. 자료형'으로 자료형을 데이터 타입을 바꿀 수 있다.

'as.character(x)'를 하면 문자형으로 모두 바뀐다.

 

7. 리스트

'x <-list(1, "a", "TRUE")' 다양한 타입의 요소들이 존재할 수 있다.

한 가지 타입만을 저장할 수 있는 벡터와 다르다.

R에서는 리스트보다는 벡터를 더 많이 사용한다.

 

8. 행렬

'x <-matrix(nrow=2, ncol=3) '

or

'x <-1:6

dim(x)<-x(2,3)'

2행 3열의 행렬을 생성한다.

채워질 때는 열부터 채워진다.

차원 속성이 존재하는 벡터이다.

'rbind(x, y)'는 x, y데이터를 행으로 합친다.

'cbind(x, y)'는 x, y데이터를 열로 합친다.

변수명이 열, 행의 이름이 된다.

cbind,rbind

9.factors(팩터)

범주형 변수를 표현함.

숫자가 아니라 라벨로 표현한다.

회귀분석에서 자주 활용된다.

'factor()'를 사용해 만들 수 있고

'table()'을 통해 빈도수를

'unclass'를 리스트 형태로 데이터를 이해하는 것이다.

10.missing value

NA와 NAN이다.

NA는 is.na()로 확인이 가능하고 모든 자료형에 가능한다.

NAN은 is.nan()로 확인이 가능하고 숫자 자료형을 대상으로 한다.

NA가 NAN을 포함한다. 그러나 NA는 NAN은 아니다.

 

11. 데이터 프레임 

python과 공유하는 개념이다.

엑셀과 같은 다양한 데이터를 하나의 테이블에 담을 수 있는 자료구조이다.

외부에서 데이터를 가져와 가공하기 위한 자료구조이다.

dataframe

12.names

R의 객체들은 이름을 가질 수 있다.

names

리스트, 행렬에서도 이름을 넣을 수 있다.

 

13.subsetting

파이썬의 slicing과 유사한 개념이다.

[]은 원래의 객체와 같은 종류의 객체를

[[]]은 리스트나, 데이터 프레임에서 한 요소만 즉 벡터로 데이터를 가져온다.

$은 이름을 통해 데이터 프레임이나 리스트에서 데이터를 추출할 때 사용한다.

인덱스는 pythom과 다르다. 1부터 시작한다.

그리고  : 에서 뒤에 나오는 위치까지 포함해서 가져온다.

인덱스와 이름으로 가져올 수 있다.

r은 다른 언어들과 달리 partial matching이 가능한데 이는

변수 이름의 일부만을 이용해 변수 데이터를 가져올 수 있다.

행렬에서 subsetting 할 때 []을 사용하면 벡터 형태로 데이터를 가져온다.

이때 drop=FALSE라는 조건을 주게 되면 행렬 형태로 가져올 수 있다.

14.missingvalue 제거하기.

isna(), isnan()은 T, F값을 반환하게 된다.

이것의 바꿔주어 적용하면 NA, NAN을 없앨 수 있다.

complete.cases()라는 함수를 사용해 데이터 프레임의 missing value를 처리하는 방법은 따로 찾아 공부해 보시면 좋을 것 같아요.

 

15.vectorized operations

r은 벡터화된 연산이 가능하다.

행렬도 같은 위치의 값들이 곱해지고 나누어진다.

행렬곱의 경우에는 %*%로 가능하다.

728x90