저수준(Low level) 언어: 기계어(Machine language)와 직접적으로 대응되는 컴퓨터 측면의 언어로, 인간이 이해하기 쉬운 자연 언어(Natural language) 보다 수준이 낮음
프로그래밍 언어는 어셈블(저수준) 또는 컴파일(고수준) 과정을 거쳐 컴퓨터 언어로 번역됨.
R의 언어는 고수준 언어임.
1.명령문 구성의 기초인 **표현식(Expression)
** - 사용자가 원하는 작업 내용을 컴퓨터가 받아들여 수행할 수 있는 다누이 명령들의 조합
상수(Constant), 기호(Symbol), 함수(Function), 연산자(operator), 간격 문자(Blank character)의 조합.
**- 표현식의 형태**
Ex) >25+15*5 #상수와 연산자의 조합
Ex) >Y=C+I+G+(X-M) #문자기호와 연산자의 조합
EX) >season<-c("spring","summer","fall","winter) #문자열 데이터로 전환, 길이 4의 벡터로 'season' 이라는 문자열에 할당
Y, C, G summer과 같은 문자열은 모두 '객채' 이기 때문에, 어떠한 내용이 할당되어 식별문자로 전환되거나, 2중 인용부호(Double quotation mark, "")와 함께 사용되어 단일 문자열 데이터가 되면 특별한 의미를 가짐.
*
3.표현식 작성 시 유의사항**상수(constant)나 변수(variable) 등은 연산자와 결합 없이 단독으로 두 번 이상 사용될 수 없으며, 특별히 상수 혹은 변수와 괄호 연산자의 결합도 이에 포함됨
Ex) >x^2-3x+2==0 이라는 예시에서, 두 번째 피연산자(operand)인 -3x는 올바르지 못한 표현이다. -3*x로 표현되어야 함.
캐럿(caret, ^)는 지수 연산자이며, 곱셈 연산자를 동시에 두 번(**) 사용하는 표현과 같다
좌변과 우변의 논리 비교를 위해 연산자 '=' 대신 '=='을 쓴 이유는, R에서는 연산자 =를 논리 비교가 아니라 할당 연산을 수행하기 때문이다. <-, ->와 같다.
- 가급적 연산자가 연속으로 사용될 수 없다*
**
할당 명령문(Assignment statement)**
특정한 데이터 혹은 연산 결과를 새로운 문자열에 할당하여, 하나의 객체를 정의
작업 결과의 반환을 요구하지 않음
할당 연산자, 할당 함수인 assign()을 사용하는 형태로 나뉨
Ex1) >x<-c(1,2,3,4,5,6,7,8,9,10)
Ex1) >assign("x", c(1,2,3,4,5,6,7,8,9,10))
Ex2) >c("USA", "Japan") ->G2
Ex2) >assign("G2", c("USA", "Japan"))
차이점: 예시 1의 2 문장은 1부터 10까지의 수치형(Numberic) 원소를 결합(Combine, c) 함수인 c()로 묶어 길이 10의 벡터를 생성한 후, 식별문자 'x'에 할당하는 명령문이다. G2 국가명을 나타내는 2개의 문자형(character) 원소를 c()함수로 묶어 식별문자 'G2'에 할당하는 명령문이다.
할당 연산자로 '='를 사용할 순 있으나, 이는 함수가 포함하고 있는 독립변수에 값을 지정할 때에도 사용되기 때문에 **할당 연산자로 '<-'와
'를 사용하자.**
객체 제거(remove) 하려면 rm()함수를 사용하면 됨,
rm(x)
*
5. 구문법칙(rules of syntax)\*\*
- **식별문자(Identifier**): 문자열에 의미가 할당되어 연산, 프로그래밍 과정에서 실체를 인식하기 위한 낱말이 되면 식별문자가 된다
- 보통 알파벳, 숫자의 조합으로 이루어지며, 마침표(period, '.')나 밑줄 문자(underscore, '\_')를 함께 사용할 수 있다.
- 간격(blank)는 포함할 수 없고, 첫 글자로 숫자나 밑줄문자 사용 안됨. 또, 마침표를 첫 글자를 사용 시 다음 문자는 숫자를 넣을 수 없음(소숫저점으로 인식)
- 한글,
행렬 식 만들기
*객채의 속성 변환 *
as.numeric(name)
as.character(name)
as.complex(name)
as.logical(name)
as.integer(name)
*클래스 확인 *
mode(my.mat) 유형 확인
class(my.mat) 클래스 확인
seq(from, to, by(단위당 증가량), length.out(생성될 수열의 길이))
*반복함수 rep() *
rep(x(대상이 되는 객체), each(각각의 요소들의 반복 횟수), times(입력된 데이터의 전체 반복 횟수), length.out(생성될 데이터의 개수))
rep(1:5, each=2)
*벡터의 원소 추출: 지표([]) 사용 *
벡터에 우너소 추가:append()
append(x(대상이 되는 객체), values(추가될 원소), after(추가될 위치, 3을 입력하면 3번째 원소 뒤에 입력됨)
*벡터의 개별 원소에 이름 부여:names() *
names(객체)<-c(2005:2010)
개별 원소들 위에 연도를 함께 표시
벡터 추출 시 해당 연도에 이중인용부호 함께 사용
GDP.rate[c("2009","2010"]
paste(2005:2010,"y",sep=" ")
2005년부터 2010년까지 개별 원소의 이름에 2005y 같은 이름을 붙여줌
*명목형 자료 *
factor(x, levels, labels, ordered)
levels:입력된 데이터으 ㅣ수준, 지정하지 않을 시 알파벳 순서
labes:레벨스 인수로 지정된 수준에 이름을 붙여줌("Gov,Co.staff","Banker","Acc" 레벨스 수준과 같은 길이
ordered:T를 입력 시 순서형으로 전환
명목형 자료의 활용:tapply(x,index,fun)
index:지표가 되는 객체
fun: 분석에 사용될 함수
Matrix 행렬 함수
Matrix(data,nrow,ncol,byrow,dimnames)
Data: 대상이 되는 데이터 입력
nrow: 행(row)의 개수를 입력
ncol: 렬(column)의 개수를 입력
byrow: 인수를 지정하지 않거나 F를 입력 시 데이터가 열 방향으로 입력
dimnaes: 각 차원의 이름 지정
Ex)
행렬의 생성
rbind(), cbind()함수
벡터를 각각 행, 열 방향으로 묶어 하나의 행렬을 만드는 함수
행렬의 원소 추출: 지표 ([]) 사용
예제 2-32
행렬의 원소 추출:지표행렬 사용(index matrix)
배열(Array)
동일한 유형으 ㅣ원소로 이루어진 데이터 구조, 여러 개의 차원으로 구성 가능
1차원 배열: '국가'라는 1개의 차원을 가진, 데이터의 위치도 하나으 ㅣ지표
2차원 배열: '국가', '경제변수' 라는 2개의 차우너을 가짐
3차원 배열: 패널 자료와 같은 3차우너으로 구성된 자료도 있음. 추가로 '시간' 이라는 개념이 생길 수 있음.
array(data,dim,dimnames)
data: 대상이 되는 데이터 입력
dim: 배열의 차원을 벡터 형태로 입력
dimnaes: 각 차원의 이름을 리스트 형태로 입력
3차원 배열을 array와 dim 함수로 생성
똑같은 배열을 만듬
배열의 조작방법
arr[1,,]: 첫번쨰 차원에 1, 즉 1행을 입력하고 나머지 차원은 모두 그대로 유지하여 2011년과 2012년 한국의 경제성장률, 대미환율, 경상수지 자료를 추출함
arr[,-2,]: 두 번째 차원에 -2를 입력하여 모든 연도에서 대미환율이 삭제된 경우
arr[,,"2012Y"] arr[,,2]: 세 번째 차원에 숫자와 문자열을 입력하여 2012년도 자료를 추출
arr[c(T,T,F),,2]: 2012년도 한국과 중국의 경제성장률, 대미환율, 경상수지 자료를 추출
배열 원소 추출방법
arr<-arr.tmp
2011년도 한국, 중국, 일본의 경제 성장률을 각각 5,6,4%로 수정
2012년도 세 국가으 경제성장률을 결측값으로 변환한 후, is.na()함수를 이용해 결측값들을 다시 8,5,2%로 수정
'코딩 - R (계량경제학)' 카테고리의 다른 글
계량경제학 3장 단순회귀모형 (1) | 2019.04.01 |
---|---|
[계량경제학:R활용] 3장 연습문제 (0) | 2019.03.24 |
[계량경제학:R활용] 경제자료의 수집과 실증 분석 (0) | 2019.03.21 |
계량경제학 3주차 [2장 R 연습문제] (0) | 2019.03.18 |