Language/R

R의 기초

westcold 2024. 4. 20. 23:19

R이란?

통계분석, 머신러닝, 인공지능을 위한 언어
 
R vs 파이썬(둘다 데이터를 사용하지만)
R-분석업무
파이썬-IT기술업무
 
*벡터
interger, numeric, character, logical 유형
 
벡터의 선언

> name = c("유비", "관우", "제갈량")
> print(name)
[1] "유비"   "관우"   "제갈량"

 
벡터의 주소

> name[1]
[1] "유비"
> length(name)
[1] 3

 
벡터의 주소 : 논리벡터

> name[c(T,T,F)]
[1] "유비" "관우"

 
seq:순차

> seq(5)
[1] 1 2 3 4 5
> seq(-1,1,by=0.5)
[1] -1.0 -0.5  0.0  0.5  1.0

 
 
*list
벡터와 리스트 차이

> name = c("유비", "관우", "제갈량")
> ability=c(7 , 8 ,9)
> print(c(name[1], ability[1]))
[1] "유비" "7"   
>       
> 관우 = list(
+ name = name[2],
+ ability = ability[2]
+ )
> print(관우)
$name
[1] "관우"

$ability
[1] 8

> 
> 관우$ability
[1] 8

 
-리스트를 활용할 경우, 특정 기준으로 데이터를 모아서 처리/호출 가능
-이름$가져오고싶은해당벡터를 활용하면 가져와진다.
 
*데이터프레임

> name= c("chan", "song", "jam")
> power=c(1,2,3)
> wisdom=c(3,2,3)
> job=c("a","b","c")
> chan=list(
+   name=name[1],
+   power=power[1],
+   wisdom=wisdom[1],
+   job=job[1]
+ )
> chan
$name
[1] "chan"

$power
[1] 1

$wisdom
[1] 3

$job
[1] "a"

> people=data.frame(name, power, wisdom, job)
> people
  name power wisdom job
1 chan     1      3   a
2 song     2      2   b
3  jam     3      3   c

-data.frame함수를 쓰면 fram이 형성된다
-행은 인물들, 열은 인물들의 특징과 직업을 표시하는 구조
 

> people[2:3,1:2]
  name power
2 song     2
3  jam     3

-영역별 호출 가능
 
*메트릭스

> a=matrix(c(1,2,3,4),nrow = 2, ncol = 2)
> a
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> mat= matrix(0,10,2)
> mat
      [,1] [,2]
 [1,]    0    0
 [2,]    0    0
 [3,]    0    0
 [4,]    0    0
 [5,]    0    0
 [6,]    0    0
 [7,]    0    0
 [8,]    0    0
 [9,]    0    0
[10,]    0    0

matrix()
메트릭스 생성
 
메트릭스와 데이터프레임의 차이점
-데이터프레임은 열마다 다른 유형의 데이터를 가질 수 있다.
-메트릭스는 각 열은 같은 데이터 타입을 가지고 있다.
->데이터프레임은 데이터를 정리하고 조작하는데 유용(데이터 분석, 시각화, 전처리)
->메트릭스는 통계분석(숫자형 데이터에 적합)에 유용/수학적 연산을 빠르게(특히 선형대수학)
 
*색인(index)

> sel=seq(10)>5
> df=c("a","b","c","d","e","f","g","h","i","j")
> df[sel]
[1] "f" "g" "h" "i" "j"
> mat = matrix(df,5,2)
> mat
     [,1] [,2]
[1,] "a"  "f" 
[2,] "b"  "g" 
[3,] "c"  "h" 
[4,] "d"  "i" 
[5,] "e"  "j" 
> mat[5,1]
[1] "e"

 
*데이터 유형 확인 및 변환

> class(mat)
[1] "matrix" "array" 
> typeof(mat)
[1] "character"
> as.matrix(mat)
     [,1] [,2]
[1,] "a"  "f" 
[2,] "b"  "g" 
[3,] "c"  "h" 
[4,] "d"  "i" 
[5,] "e"  "j" 
> as.data.frame(mat)
  V1 V2
1  a  f
2  b  g
3  c  h
4  d  i
5  e  j
> a=1.2345
> as.integer(a)
[1] 1
> as.numeric(a)
[1] 1.2345

-class/typeof는 유형 확인
-as.matrix()/as.data.frame()/as.integer()/as.numeric()을 활용하면 변환
 
*데이터 읽기/확인/저장
 
사정상 파일이 없어 코드로만 올린다.

 df=read.csv("c://data/bearing.csv")

-데이터 가져오기=읽기
 

> head(mat,3)
     [,1] [,2]
[1,] "a"  "f" 
[2,] "b"  "g" 
[3,] "c"  "h"

-원하는 row확인 가능
 

> names(iris)
[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species" 

-활용 변수의 종류 확인 가능
 

> str(iris)
'data.frame':	150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
> summary(iris)
  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width          Species  
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100   setosa    :50  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300   versicolor:50  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300   virginica :50  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199                  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800                  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500 

-str을 활용하면 데이터의 전체 구조를 볼 수 있음
-summary를 활용하면 전체적인 통계량 가늠 가능

> summary(iris)[1,2]
[1] "Min.   :2.000  "

-필요한 정보도 추출 가능

> fix(df)
> Views(df)

-데이터 전체를 볼 수도 있다

> dim(iris)
[1] 150   5

-데이터의 크기 확인 가능
 

> write.csv(iris, "c:/data/iris.csv")

-저장