R - chapter 2
-
Upload
dong-heon-cho -
Category
Engineering
-
view
22 -
download
6
Transcript of R - chapter 2
표현식과 데이터 객체Chapter 02
조동헌 Davi Innovation
챕터 2 목차• 표현식• 데이터형• 벡터• 행렬• 배열• 리스트• 범주형 자료
• 데이터 프레임
• 시계열
표현식
• 연산자, 상수, 변수 등을 연속 입력 불가
• 공백, 탭은 가독성을 높이기 위해 사용
• **의 입력은 ^(거듭제곱)과 같다
표현식
•circle����������� ������������������ <-����������� ������������������ pi*r^2
•circle����������� ������������������ <-����������� ������������������ pi*r**2
•(34+65)*23
•5**2
•total<-kor����������� ������������������ neg����������� ������������������ mat����������� ������������������ +
•age=����������� ������������������ ++age
•str<-<-“R����������� ������������������ is����������� ������������������ free”
<바른 표현식> <틀린 표현식>
표현식 - 식별자• 식별자는 객체 이름, 함수 이름 등을 말함
• 식별자 규칙• 첫째 문자는 영문으로 시작(ex> a10 (o), 10a(x) )
• 대소문자 구별가능(ex> a10, A10 다른 식별자)
• . (점), _(언더바) 포함 가능, 외 특수문자 입력 불가(!,%,$)
• 예약어 사용 불가(ex> pi, if, else, next, abs, sin 등)
• 간결하고 이해하기 쉬운 식별자 사용
데이터형• 데이터형 종류• 수치형(numeric) : 정수, 실수, 지수 등 (ex>36, 3.14, 625e-12)
• 논리형(logical) : 논리적 참과 거짓 표현 (T , TRUE, 1 // F, FALSE, 0)
• 복소수형(complex) : 복소수. a+bi의 형식 (ex> 34+23i)
• 문자형(character) : 문자, 문자열. ‘ ’, “ ”로 표현 (ex>‘Hello’, “World”)
• raw형 : 가공되지 않은 원시 바이트(byte) 데이터
데이터형
데이터형
• mode( ) 명령어
• storage.mode( ) 명령어
- 괄호 안의 데이터형 출력
- 괄호 안의 데이터 타입 출력
//(주의!)FALSE와 False는 다른 것!
//1:5는 (정수)1에서 (정수)5까지 정수를 가르킴
데이터형storage.mode( ) 함수• storage.mode( ) 함수는
R에서 메모리나 디스크 등에 실제로 저장되는 데이터 타입을 알려줌
• 수치형(numeric)은 정수(intger)과 실수(double)로 나뉨
• typeof( ) 함수 같은 기능 - 조금더 세분화하여 판단
//으잉? 정수 1인데 double(실수)형?
<잠깐! mode() 함수, storage.mode() 함수는 typeof() 함수를 호출하여 구현한 함수이다!>
데이터형raw 형
• raw형은 가공되지 않은 윈시 바이트(byte) 데이터를 의미하며, 16진수로 표현된다
• raw형은 자주 사용되지는 않지만, 벡터나 행렬 등을 만들 수 있는 기본형 중의 하나이다
• raw형의 표현의 범위는 십진수로 0부터 255까지의 256개로 각각 256개의 ASCII 코드로 표현할 수 있다
데이터형raw 형
<as.raw( ) 함수는 주어진 숫자를 raw형(16진수)로 변환>
//범위 0~255를 초과시 에러
<rawToChar( ) 함수는 raw형을 char형으로 변환><charToRaw( ) 함수는 char형을 raw형으로 변환>
<as.numeric( ) 함수는 raw형을 numeric형으로 변환>
//(numeric형)65를 raw형으로 변환 후 char형으로 변환
//(char형)A를 raw형으로 변환
//(char형)A를 raw형으로 변환 후 numeric형으로 변환
참고> ASCII 코드에 의하면65==A;
데이터형 - 형 변환//x 식별자 선언 전
//x 식별자 선언
//x 식별자 character형에서 numeric형으로 변환
//X 식별자는 없음(대소문자 구분)
//x 식별자 charcter형에서 numeric형으로 변환 확인
//x 식별자에 pi(3.1427...)값 대입
//double.x 식별자 선언 하며 pi값 대입
//double.x 식별자 double형에서 integer형으로 변환(numeric형에는 double형과 integer형 종류 있음)
//raw.x 식별자 선언하며 65를 raw형으로 변환, 대입
mode(식별자)<- “변환할 형”
//raw.x 식별자 raw형에서 character형으로 변환
//raw.x 식별자 character형에서 numeric형으로 변환
storage.mode(식별자)<- “변환할 형”
데이터형 - as.*( ) 함수//char.x 식별자 선언. character형 “123”으로 초기화
//char.x 식별자 character형에서 numeric형으로 변환
식별자<-as.변환할 형(식별자)
벡터(vector)
벡터(vector)는 하나 이상의 수치값, 논리값, 복소수값, 문자값, raw 등으로 구성된 데이터 구조
벡터(vector)
typeof mode storage.mode examplelogical logical logical TRUE, T, F, 3<4
integer numeric integer 1:4
double numeric double 1.01, 1.1, 2, pi
complex complex complex 1+4i, 2i
character character character “hi”, ‘hi’
raw raw raw as.raw(65)
<벡터를 구성하는 기본형들>
벡터
벡터를 정의하는 속성 = 벡터를 구성하는 기본형(mode) + 원소의 개수를 나타내는 길이(length)
1, 3, 5, 7, 11, 13 - 길이가 6(length)인 수치형(numeric) 벡터
“spring”, “summer”, “fall”, “winter” - 길이가 4(length)인 문자형(character) 벡터
벡터character > complex > numeric(double>integer) > logical > raw
<강제 형 변환 우선 순위>
//complex<-numeric+complex
//character<-character+numeric
//numeric<-numeric+logical
//character<-character+numeric
//character<-character+complex
//numeric<-numeric+raw
//logical<-logical+raw
//character<-character+raw
//복소수 i. 1*i는 i로 표현하지 말고 1i로 표현
//복소수 i. 1*i는 i로 표현하지 말고 1i로 표현
//double<-double+integer
벡터sequence 연산자( : )
//문자형의 경우 에러 발생
//연산 우선순위로 1:3 이후에 +3i 계산
//(3+3i) 연산 시 3i가 0이 됨
//우선순위로 2i:(3+3i) 계산 후 1+ 계산
# 연산 우선 순위 ( : > 사칙연산 )- 괄호 적절히 사용하는 것이 중요
//논리형은 FASLE는 0, TRUE는 1로 변환 후 계산
//1:5 계산 후 +4 계산
//1:5 계산 후 *4 계산
//-1:5 계산 후 /4 계산
//-2:5 계산 후 *4 계산 후 -1 계산
//5i:7 계산 후 3+, +6i 계산
벡터seq(along=(시작, 끝,) length=간격) 함수
>시작, 끝, 간격의 기본값은 1
// 1:length(x)
벡터rep(along=원소들 값, each=각각 원소 반복할 수,
len=반복하여 생성할 최종 벡터 길이, times=반복할 전체 횟수) 함수>along의 기본값은 NULL ,each, times의 기본값은 1
벡터scan( ) 함수
scan( ) 함수는 키보드로부터 자료를 입력받거나외부 파일로부터 자료를 읽어들이는 함수
행렬(matrices)
행렬(matrices)은 수학에서의 행렬과 구조가 동일하고 수치형 이외의 원하는 자료형을 가질 수 있다
행렬의 속성
• length : 행렬 원소의 개수
• mode : 행렬 원소들의 자료형
• dim : 행과 열의 개수
• dimnames : 행과 열의 이름
행렬matrix( ) 함수
//mat 식별자 생성 초기화(저장)
1:12 //원소 : 1~12(numeric형)ncol=4 // 행(가로) : 4
byrow=T //byrow는 행렬의 원소인 벡터를 행 방향 배치 or 열 방향 배치 설정 - T이면 행방향, F혹은 생략이면 열방향
LETTERS[1:12] //원소 : “A”~”L”(character형)nrow=4 // 열(세로) : 4
dimnames=list( c(“Row.1”, “Row.2”, “Row.3”, “Row.4”) , c(“Col.1”, “Col.2”, “Col.3”) ) //행 이름과 열 이름 리스트(list) 값으로 설정
행렬matrix( ) 함수
attributes( ) 함수행렬의 차원인 dim과 행과 열의 이름인 dimnames를 반환
//dim 가로행 수, 세로행 수 출력
//dimnames 행, 열의 이름 출력//열
//행
length( ) 함수 // 행렬의 원소 개수mode( ) 함수 // 데이터형 출력
matrix( ) 함수 // nrow, ncol 인수를 사용하지 않으면 열의 개수가 1(ncol=1)인 행렬을 생성
행렬rbind( ) 함수
rbind( ) 함수를 사용하여 만들어진 행렬의 행의 개수는 rbind 함수에서 사용한 인수의 개수와 같고, 열의 개수는 인수에 사용한 벡터에서 길이가 가장 긴 벡터의 길이와 같다
행렬cbind( ) 함수
cbind( ) 함수는 벡터를 열 방향으로 묶는 함수 // rbind( ) 함수는 행 방향- 열의 이름 지정 가능
행렬dim( ) 함수
dim( ) 함수는 객체의 차원을 반환하는 함수dim( ) <- c( )를 이용해 행렬을 만들 수 있음
//mat 식별자 생성, 1:6 초기화
//벡터를 2행 3열 행렬로 변경
//행렬 차원을 없애 다시 벡터로 변경
행렬array( ) 함수
array( ) 함수는 배열을 만드는 함수is.matrix( ) 함수는 전달받은 인자가 행렬인지를 판단하는 함수
배열(arrays)
배열(arrays)은 동일한 형의 원소를n개의 차원으로 구성한 데이터 객체
배열의 속성
• length : 배열 원소의 개수
• mode : 배열 원소들의 자료형
• dim : 배열의 차원
• dimnames : 배열 차원의 이름
배열array( ) 함수
array( ) 함수- 2x3x4의 3차원 배열
- dimnames=list( )로 행렬의 이름을 정함
리스트(lists)
리스트(lists)는 서로 다른 유형의 데이터로 구성된 데이터 객체- C언어의 구조체
리스트의 속성
• length : 성분의 개수
• mode : 리스트의 자료형
• names : 각 성분들의 이름
리스트
리스트의 형 : list리스트의 성분 개수 : 3리스트의 성분 이름 : NULL
리스트
범주형 자료(categorical data)
범주형 자료(categorical data)는 어떠한 성질을 나타내는 자료
ex)sex : “male”, “female”hand : “left”, “right”fruit : “apple”, “banana”, “kiwi”
범주형 자료 - factor
• length : 원소들의 개수
• mode : factor의 자료 형. 항상 “numeric”의 값을 가짐
• names : factor의 각 원소 이름
• levels : 범주형 자료의 수준
<factor 자료형의 속성>
R에서 범주형 자료의 자료형을 factor로 명명
범주형 자료 - factor
answer.fct원소 개수 : 3자료형 : numeric
자료의 수준(level) : “no”, “yes”
범주형 자료 - factor
person.vec원소 개수 : 5자료형 : numeric
자료의 수준(level) : “Male”, “Female”각 원소의 이름 : “1th”, “2th”, “3th”, “4th”, “5th”
levels 인수에 있는 원소를 출력
> person.vec1th����������� ������������������ ����������� ������������������ ����������� ������������������ 2th����������� ������������������ ����������� ������������������ ����������� ������������������ 3th����������� ������������������ ����������� ������������������ ����������� ������������������ 4th����������� ������������������ ����������� ������������������ ����������� ������������������ 5th“M”“F”����������� ������������������ “M”����������� ������������������ “F”����������� ������������������ “M”
//각 원소 이름
각 원소에 label을 붙여줌labels=c(“Male”)일 시는 Male1, Male2
라벨 사용시, 원소보다 label수 많으면 error
범주형 자료 - ordered factor
factor의 level에서 순서의 의미를 부여함
데이터 프레임(data frames)
데이터 프레임(data frames)는 데이터베이스의 테이블과 유사
> 테이블의 열은 데이터베이스에서 지원하는 자료형으로 이루어지고, 각각의 열의 자료형은 달라도 됨. 이런 유사성으로 자료분석 과정에서 데이터베이스의 테이블 자료를 ODBC를 통해 R의 데이터 프레임으로 불러와서 분석
데이터 프레임의 속성
• length : 변수들의 개수(열방향 데이터가 변수)
• mode : 항상 “list”의 값을 갖는다
• names : 변수들의 이름
• row.names : 행의 이름
• class : 항상 “data.frame”을 갖는다
데이터 프레임
• 데이터 프레임을 만드는 방법
- data.frame 함수를 사용해서 만들기
- read.table로 외부 파일 읽어들이기 - 6장
데이터 프레임- data.frame( )
<앗 실수!(naems)>
<row.names 인수 행 이름 지정>
데이터 프레임- data.frame( )
<$ 연산자 - 데이터 프레임의 변수값을 액세스>
#주의! data.frame() 함수로 데이터 프레임을 만들 시,문자벡터(character형)은 범주형 자료(categorical data)로 자동 변환!!!
자동����������� ������������������ 변환����������� ������������������ 싫으면!����������� ������������������ stringsAsFactors=F
시계열(time series)
시계열(time series)는 시간의 경과에 다른 데이터 분석을 위한 ts(time series) 클래스 객체
시계열의 속성
• length : 원소들의 개수
• mode : 원소 값들의 종류
• tsp : 시작 시점, 종 시점, 시간의 간격
• dim : 다중 시계열에서의 행과 열의 수
• dimnames : 다중 시계열에서 행과 열의 이름
시계열- ts( )
frequency=4 //분기별frequency=12 //월별frequency=1 //년도별
<start 인수 사용>
시계열- ts( )
frequency=4 //분기별frequency=12 //월별frequency=1 //년도별
<end 인수 사용><print 사용 - calendar=T>
시계열- tsp( )
tsp( ) 함수는 ts 객체의 start, end, frequency를 출력
시계열- mts(multiple times series)
mts(multiple times series)는 시계열 자료에서 계열의 개수가 두개 이상인 것을 일컫는다
ncol은 행 원소 개수nrow는 열 원소 개수
Chapter 2 - 표현식과 데이터객체 is END.
조동헌 copyright [email protected]