DATOR


분석준비단계:분석프로그램입문 Vector Object(R 코드 파일 첨부)

빅데이터 분석도구 오픈소스 R에 대한 구동원리 부분, 데이터 저장 구조 부분이여서으로, 다소 지루할 수 있는부분이지만 빅데이터 분석을 위해서는 필수로 학습하여야 할 부분입니다.

점점 복잡한 기술을 습득하게 되면 ,저장된 데이터 구조 등의 문제 해결이 되지 않는 경우가 많습니다.

이부분을 잘 습득해 두지 않으면 머신러닝등의 분석기법에 가서 , 기본 베이스가 학습되지 않아 분석을 못하는 어려움을 격게됩니다.

한번 은 꼭 자세히 실습하고, 두번은 반복하세요.


* 첨부된 R 코드로 학습하세요.

R 코드 파일 첨부

RFundamental_vector.R




1. Vector Object의 생성


- R에서 vector object는 동일한 데이터 타입(문자, 숫자)의 값으로 구성된 1차 행렬(차원이 없다) 객체.

{1, 2, 3, 4, 5}, {“a”, “1”, “c”} 와 같이 한 가지 데이터 타입으로 구성된 데이터의 집합.

- 벡터(vector)의 최대 사이즈는 이론적으로는 2,147,483,647(=2^31-1) 

- R은 모든 데이터를 기본적으로 vector object 로 저장

다시 말하면 모든 변수는 기본적으로 배열 형식으로 저장된다는 의미

- 외부데이터(엑셀, csv )R로 읽기를 하게되면 ___data.frane_object.

하나의 컬럼이 문자로 구성 R로 읽기를 하게되면 Factor.______

- vector 생성에 주로 사용되는 함수는 c (combine) 

c()는 일련의 입력된 데이터를 병합하는 함수로서 combine의 약어

- vc_1<-c(2,5,6)

동일 타입의 데이터를 c() 함수사용 vector 생성.

c 함수는 데이터 타입만 동일하다면 모든 타입에서 간단히 vector를 생성 가능

c() 함수는 vector 구조의 변수를 묶어서 하나의 vector로 합칠 수 있음

c()combine, 소문자c를 사용.



* 숫자 타입의 데이터를 c()함수를 사용하여 vector Object로 생성


> vX<-c(1:5,10)

 

> vX

[1] 1 2 3 4 5 10

 

object 가 무엇인지 확인해야한다. object 에 따라 사용할 수 있는 함수가 다르기 때문이다.

"numeric" 이라는 object는 없다. 그러므로 is.vector()함수를 사용하여 vector object 인지 확인하여야한다.

> mode(vX)

[1] "numeric“

 

> data.class(vX)

[1] "numeric“

 

> typeof(vX)

[1] "double“

 

#vector object

> is.vector(vX)

[1] TRUE 


실행 화면

 _2Fundamental_vector_create.JPG


* 논리값을 c() 함수 사용 vector Object로 생성


“TRUE,FALSE“ 같은 논리값을 c()함수를 사용하여 변쉥 저장하면 vector object가 된다.

> vX3 <- c(TRUE,FALSE,TRUE)

> vX3

[1] TRUE FALSE TRUE




*  vector Object을 합하여 vector Objecr를 생성

c() 함수는 입력값으로 v1 vector Object를 입력값으로 사용하여 ve vector ovject를 생성하였다.

> v1<-c(1,2)

> v2<-c(3,v1)

> v2

[1] 3 1 2

 


* 두 변수를 하나로 묶기 c()

c() 함수는 vector 구조의 변수를 묶어서 하나의 vector로 합칠수 있다. 대체적으로 떨어져 있는 값들을 하나의 변수에 저장하는 기능이 있다.

 

 

> vA<-c(1,2,3)

> vb<-c(4:8)

> c(vA,vb)

[1] 1 2 3 4 5 6 7 8



2. Vector Object 관련 함수


* Vector element에 이름 붙이기


vector object 내 원소 값에 이름 붙이기는, names() 함수를 사용

vector 내의 데이터값에 이름을 붙이는 기능

이러한 기능은 이후에 data frames에서 열에 이름을 붙일 때는 colnames() 또는 names() 가 동일한 기능.

data frames은 행과 열이 있기때문에colnames() 사용 가능하고 vector object은 행과 열이 없다 그러므로 names()만 사용가능.

 

v_Weight은 동물의 무게를 측정한 데이터 이다. 10 값은 쥐의 무게이고, 20 값은 토끼의 무게이다. 값에 동물이름을 붙여보자.


> v_Weight <- c(10,20,30,60)

 

> is.vector(vWeight)

[1] TRUE

 

> names(vWeight)<- c("mouse","rabbit","dog","human")

 

> vWeight

mouse rabbit dog human

10 20 30 60

 

# colnames() 접근불가능하다. col이 컬럼의 약어로 생각할 수 있는데 화면에 보이는 vector은 컬럼처럼 보이지만 컬럼이 없는 1차원이기 때문에 에러메세지가 출력된다.

# colnames() data frames에서 사용된다.

 

#vector에서는 아래와 같은 error 가 출력된다.

> colnames(vWeight) <- c("m","r","d","h")

다음에 오류`colnames<-`(`*tmp*`, value = c("m", "r", "d", "h")) :

2 차원 보다 작은 객체에 colnames 를 설정하려 했습니다

 



 

vector object의 데이터가 입력된 모양은 실제는 아래와 같다고 생각하면 된다.

 

1

1

mouse rabbit dog human

10 20 25 60 


* Vector element의 마지막 값의 이름에 접근해 보세요.


마지막 데이터의 엘레먼트의 이름은 human.

이를 확인하기 위해 length()와 데이터셋명[위치번호 ]를 사용.


#length()vector의 개수를 세어서 출력한다.

#데이터셋명[length()] 이되면 이는 마지막 위치에 있는 데이터를 출력하게 된다.

> vWeight <- c(10,20,25,60)

> names(vWeight) <- c("mouse","rabbit","dog","human")

> vWeight[length(vWeight)]

human

60

 

 

 그러면 조금더 응용을 해서, vector Object의 마지막 엘레먼트명을 출력해보자.

이는 names(데이터셋명)[마지막데이터의위치번호]의 형식으로 출력 가능.

> names(vWeight)[length(vWeight)]

[1] "human"

 




3. Vector Object 읽기

앞에서 설명한 바대로 vector Object1차 구조, 값을 읽기 위해서는 위치를 번호 하나로로 지정해야

즉 행번호와 열 번호 두 개를 입력할 필요가 없음.

 

Vector object 읽기의 형식은 v_VectorX[인덱스]형식

여기서 인덱스는 matrix_object [행위치, 열 위치].

이를 v_VectorX“[ ]” 위치의 element를 참조한다라고 표현


*(1)  여러 데이터값을 선택하려면 c()를 사용해서 Vector을 인덱스로 사용.



떨어져 있는 값을 여러개 호출하는 경우 c(위치1, 위치2, 위치3)

아래예제서 1번째, 2번째, 1번째 위치에 있는 값을 각각 반복 호출하여 출력

“c(1,2,1)“vector 

 일 반 적 인 형태 : 데이터셋명[위치지정]이고,

 여러 데이터를 읽기할 때 형태는 데이터셋명[c(위치1,위치2,)]

 

>vector<-c(100,200,300,400,500)

> vector[c(1,2,1)]

[1] 100 200 100




* (2) 떨어져 있는 값들을 추출할 때 c()로 묶지 않으면 오류 발생


>vector<-c(100,200,300,400,500)

 

# 아래와 같이 입력하면 [1,3][행번호, 열 번호], 로 인식하므로 vector object에서 에러가 발생

> vector[1,3]

Error in vector[1, 3] : incorrect number of dimensions

 

# c(1,2)로 하면 첫 번째 위치와 세 번째 위치의 값을 읽음

>vector[c(1,3)]

[1] 100 300

 

_2Fundamental_vector_떨어져있는값들을 c로묶지않으면.JPG



* (3) 입력한 인덱스가 vector Object 길이를 벗어나면 NA를 출력

입력한 인덱스가 vector Object 길이를 벗어나면 NA(Not Available)를 출력하므로, 그러므로 length()함수를 활용하여 길이 확인 필요하다.

#vector[100] 100번째 값을 읽어오라는 뜻이된다.

#vector 에는 5개의 값만 있으므로 “NA”가 출력된다.


>vector<-c(100,200,300,400,500)

[1] 100 200 300 400 500

 

> vector

[1] 100 200 300 400 500

 

#5번째 값은 5 이다.

>vector[5]

500

 

#100번재 값은 없다(NA).

> vector[100]

[1] NA

 

#길이를 확인

> length(vector)

[1] 5

 

마지막 값을 확인

> vector[length(vector)]#vector[5]

[1] 500

 

실행화면

_2Fundamental_vector_입력한 인덱스가 vector길이를벗어.JPG



vector<-c(100,200,300,400,500)

#vector[마지막위치]
vector[length(vector)]
#vector[-삭제하고자하는 위치]
vector[-5]

vadd<-c(10,20,30,40,50,60)
#위치지정 <- 입력하고자하는 값
vadd[10]<-100
vadd
# 변수명<- 기존변수에서 입력하고자하는 부분까지만 지정
vadd<-vadd[1:3]
vadd


 vector object 내 원소 값에 이름 붙이기, names(),

vWeight <- c(10,20,25,60)
is.vector(vWeight)
names(vWeight) <- c("mouse","rabbit","dog","human")
vWeight
colnames(vWeight) <- c("m","r","d","h") #error
vWeight[1]
vWeight["mouse"]

vWeight[length(vWeight)]

#마지말 컬럼명
#names(데이터셋명)[length(데이터셋명)]
names(vWeight)[length(vWeight)]
vWeight1[1,1] #error

vWeight <- c(10,20,25,60)
is.vector(vWeight)
names(vWeight) <- c("mouse","rabbit","dog","human")
names(vWeight)[length(vWeight)-3]



NA 값이 있으면 연산불가
sum(c(2,NA,2),na.rm=FALSE)
#NA 값을 제외하고 연산
sum(c(2,NA,2),na.rm=TRUE)
sum(c(2,NA,2))
2+NA+2


_2Fundamental_vector_NA처리하기.JPG






vX<- c(NA,NA,NA,NA)
sum(is.na(vX))==length(vX)

vv<-c(1,2,3,4,5,6,7,8,9,10)
#5보다 큰값의 위치에 TRUE 
vv>5
#5보다 큰값 출력
#데이터셋명[조건]
vv[vv>5]
##5보다 큰값을 "600"으로 변경
vv[vv>6] <- 600
vv

x1<-c(1,2,3,4)
x1
x2<-c(4,4,4,4)
x1==x2


%in%은  앞이기준

vX1 <- c(10,20,30,40,50)
vX2 <- c(20,30)
vX1 %in% vX2
vX2 %in% vX1




vv<-c(10,20,30,20,40)
match(20,vv)#일치하는 첫번째 위치
which(20==vv)#일치하는 모든 위치



 vector() 함수로 length만 지정한 경우

vector() 으로 길이 3의 공간을 만듬, type을 지정하지 않았으므로 FALSE 로 할당

y<-vector(length=3)

y

length(y)

y[1]


y[3]위치에 숫자3값을 입력하면 type이 숫자로 설정 됨

vector object는 동일한 type 만 저장 가능하므로 

나머지 y[1]과 y[2]도 type가 숫자로 변경된다. FALSE 가 있었 이므로  0으로 변경된다.

y[3]<-3

y

_2Fundamental_vector_빈vector생성하기.JPG



*데이터분석  분석 도구 R Fundamental 한희선 저서에서 발췌하였습니다.



책_분석도구 R fundamental.jpg


* 글은 아래의 순서에 따라 게제예정 입니다.

                                                                                                                                                                                 엔코아 아카데미에서 빅데이터 분석강의 시간에 뵙겠습니다.

1.

분석프로그램

분석 프로그램 입문

R Enviroment, Package, Vector Object, Factor Object, Matrix Object, DataFrame Object, List Object, Arrary Object, Time-series

2.

데이터수집과 저장

데이터수집과 저장

 

정형 데이터

분석프로그램 내외부로부터 데이터 읽기와 쓰기

데이터 받을 수 있는 웹사이트

. csv 파일 읽기

. 탭으로 구분된 파일 읽기

. 규칙적인 형식의 다양한 Text 파일 읽기

. 넒이로 고정된 형식의 테이블 읽기

. 불규칙한 형식의 text 파일 읽기

. 웹페이지

. 테이블 형식 외의 데이터

. x l s, xlsx 파일 읽기

.사이즈 큰 xlsx 파일 읽기

. SAS 파일 읽기

. SPSS 파일 읽기

. 여러개 파일 동시에 읽기

. Open-API

. pdf 파일 읽기

. 데이터 파일로 내보내기, 데이터 저장하기

. 데이터베이스 연동

. SNS 긁기facebook twitter크롤링

.웹페이지에 연결된 링크 주소 가져오기

.X M L 읽기

.DBMSR 인터페이스

.ORD

.My SQL 과 연동

비정형

Tag

Leave Comments