본문 바로가기
WBS - 2024 Fall/포트폴리오 매니지먼트

(PF Mgmt #3) (3) R의 기초 - 그 두 번째

by fastcho 2024. 10. 21.
반응형

(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, 매출액 이익률의 기본 통계량을 회계연도별로 계산한다.

 

콘솔에서의 작업을 함수로 만들어 나가면 됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형