R의 기초
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")
-저장