반응형
(3) R의 기초 - 그 두 번째
- 리스트와 데이터 프레임
- R에서의 "리스트"
- 특별한 리스트로서의 "데이터 프레임"
- 데이터 프레임의 조작 함수
- data.frame(), merge() 등
- 함수의 정의와 소스 파일의 관리
- function(), source().
- 프로그램의 제어 구조
- 조건 판단, if(){} else {} 구문
- 루프 제어, while(), for().
리스트 (list)
- 서로 다른 타입(모드)을 가진 여러 객체의 모음
- C 언어의 구조체, C++의 클래스
행렬(matrix)에서는 그 요소가 모두 동일한 타입(보통은 수치형)을 가져야 한다.
↓
문자열(character)이나 벡터를 요소로 가질 수 있는 분석 대상을 표현할 수 없다.
↓
R/SPlus에서 '리스트'의 활용
멤버 이름의 활용
리스트의 요소는 [[숫자]]나 $이름으로 접근 가능하다.
리스트를 요소로 가지는 리스트
리스트의 멤버는 무엇이든 상관없다.
따라서, 리스트의 요소가 리스트여도 된다.
더 단순한 리스트를 조합하여, 복잡한 분석 대상을 컴퓨터 상에서 표현하고, 분석 가능한 객체를 설계할 수 있다.
데이터 프레임
- 리스트에 제한을 가한 것이 데이터 프레임이다.
- 멤버는 모두 동일한 길이의 벡터여야 한다.
- 서로 다른 타입의 벡터를 열로 가지는 행렬에 가까운 데이터 구조
- 예: 기업 재무 데이터를 표현한다. (`load("e:/FSData.rdata")`)
EXCEL 시트나 다른 통계 패키지(SAS 등)에서 다루는 데이터는 모두 R/SPlus에서 데이터 프레임으로 취급 가능하다.
데이터 프레임의 키에 의한 결합
- 인덱스가 있으면, 두 종류의 데이터 프레임을 결합할 수 있다.
- 예제: 대차대조표와 손익계산서의 결합
키는 단독으로 사용할 수도 있고, 3개 이상을 동시에 사용할 수도 있다.
인덱스가 적절히 주어져 있으면, 데이터 결합 처리는 R에서 가능하다.
함수의 정의 `function()`
c(ave,sd) 평균과 표준 편차를 길이 2의 벡터로 반환값으로 한다.
함수는 콘솔에서 입력할 수도 있지만, 보통은 소스 파일을 작성하여 그곳에서 불러오는 것이 작업 효율이 높다.
외부 파일에서 함수의 읽어오기
- `source("파일명")`
- 예를 들어, H:/src/sample1.rsc를 텍스트 에디터로 작성
- `source()`로 불러옴으로써 사용 가능하게 된다.
# 소스의 마지막에 빈 줄이 한 줄 필요하므로 주의!
함수와 지역 변수 (Local Variable)
- 함수 내부에서 사용하는 변수는 지역 변수이다.
- 다만 외부 환경의 값을 복사하는 경우가 있다.
함수 내부에서 사용되는 x, y는 원래 객체 x, y의 복사본이므로, 이를 조작해도 원래 객체는 변경되지 않는다.
조건식
- `if (논리식) 식`
- `if (논리식) 식1 else 식2`
기타: 조건을 만족하는 경우 `==` (등호 =를 2개),
논리합 `||` (백스페이스 왼쪽의 세로 막대를 2개) 등을 자주 사용.
반복문
- `for(변수명 in 식1) 식2`
- `while(논리식) 식`
변수 x는 현재 55입니다.
x가 10^-4 이상인 동안, `{}` 내의 계산을 반복합니다.
x는 반드시 절반이 되므로, 20번의 반복 후에 0.00005245가 되어 루프가 종료됩니다.
비명시적 반복 `apply`
- 행렬의 각 열이나 행에 함수를 적용할 때는 반복문을 사용할 필요가 없다!
apply(객체명, 축, 함수명)` (각 행 -> 1, 각 열 -> 2)
함수는 직접 정의한 것도 사용 가능하다.
랜덤 워크 시뮬레이션을 함수로 구현.
단, 난수를 사용한 시뮬레이션이므로 실행 결과는 다를 수 있음을 주의하세요.
과제(2) 데이터 프레임 처리와 함수 정의
- 다음 기능을 가진 함수를 작성하세요.
- 3종류의 데이터 읽어오기:
- 기업 기본 정보 → `Profile.csv`
- 대차대조표 항목 → `BSSample.csv`
- 손익계산서 항목 → `PLSample.csv`
- 3종류의 객체를 `merge`하여 하나의 데이터 프레임 'FS'로 만든다.
- 니케이 코드, 업종, 회계연도, ROA, ROE, 부채비율을 열로 하는 새로운 데이터 프레임을 생성한다.
- 가능하다면, ROE, ROA, 매출액 이익률의 기본 통계량을 회계연도별로 계산한다.
- 3종류의 데이터 읽어오기:
콘솔에서의 작업을 함수로 만들어 나가면 됩니다.
반응형
'WBS - 2024 Fall > 포트폴리오 매니지먼트' 카테고리의 다른 글
(PF Mgmt #8) (8) Fama-MacBeth형 회귀 분석 (0) | 2024.11.29 |
---|---|
(PF Mgmt #7) (7) 포트폴리오 방법을 이용한 정보 분석 (0) | 2024.11.22 |
(PF Mgmt #6) (6) 제약 조건이 있는 포트폴리오 최적화 (0) | 2024.11.15 |
(PF Mgmt #5) (5) 평균-분산 모델의 수리 (0) | 2024.11.08 |
(논문1) 기대 주식 수익률의 횡단면 유진 F. 파마와 케네스 R. 프렌치 | The Cross-Section of Expected StockReturns EUGENE F. FAMA and KENNETH R. FRENCH (0) | 2024.10.28 |
(PF Mgmt #4) (4) 시계열 데이터와 데이터베이스 접근 (0) | 2024.10.25 |
(PF Mgmt #2) "R 기초 - 그 1 - (0) | 2024.10.11 |
(PF Mgmt #1) Introduction - 문헌조사의 방법 (0) | 2024.10.04 |