지난번과 같은 예제를 사용해 보겠다.

 

> fruit<-c("banana","apple","apple","banana","orange","banana")
> weight<-c(2,3,3,5,2,5)

 

바나나 데이터, 애플 데이터, 오렌지 데이터를 나누고 싶다. 이럴 때 split()를 쓴다.

 

> split(weight,fruit)
$apple
[1] 3 3
$banana
[1] 2 5 5
$orange
[1] 2

 

보는 바와 같이 결과는 리스트 형식으로 나온다. 이제 lapply()를 써서 분할된 각각의 데이터로 평균이든 합이든 구할 수 있다.

 

> lapply(split(weight,fruit),mean) 
$apple 
[1] 3 
$banana 
[1] 4 
$orange 
[1] 2

 

sapply()도 당연히 쓸 수 있다.

 

> sapply(split(weight,fruit),mean) 
 apple banana orange  
     3      4      2 

 

입력값이 벡터가 아니라 데이터 프레임이라도 상관 없다. 나이 변수를 하나 더 만들어서 컬럼 세 개짜리 데이터 프레임을 만들어 보자. (근데 과일 나이가 여섯살, 일곱살 이게 가능한가? 암튼)

 

> age<-c(4,5,4,6,7,7) 
> fruits<-data.frame(fruit,weight,age)
> fruits 
   fruit weight age 
1 banana      2   4 
2  apple      3   5 
3  apple      3   4 
4 banana      5   6 
5 orange      2   7 
6 banana      5   7

 

split() 함수의 두번째 argument는 factor니깐 세 개의 변수 중에 무엇을 factor로 할 건지를 정해야 한다. data.frame의 규칙을 따라 다음과 같이 $ 표시를 쓴다. 과일 이름을 기준으로 할거니까,

 

> split(fruits,fruits$fruit) 
$apple 
  fruit weight age 
2 apple      3   5 
3 apple      3   4 

$banana 
   fruit weight age 
1 banana      2   4 
4 banana      5   6 
6 banana      5   7 

$orange 
   fruit weight age 
5 orange      2   7

 

이제 lapply()를 쓸 수 있는데 이건 벡터가 아닌 데이터 프레임의 리스트이기 때문에 그냥은 못 쓴다. 칼럼별로 평균을 구하는 colMeans() 함수를 이용해 사용자 정의 함수를 하나 만든다.

 

> lapply(s,function(x) colMeans(x[,c("weight","age")])) 
$apple 
weight    age  
   3.0    4.5  

$banana 
  weight      age  
4.000000 5.666667  

$orange 
weight    age  
     2      7 

 

매우 비슷하게 sapply() 함수도 쓸 수 있다. 

 

> sapply(s,function(x) colMeans(x[,c("weight","age")])) 
       apple   banana orange 
weight   3.0 4.000000      2 
age      4.5 5.666667      7
Posted by jujaeuk
,

R, apply, lapply, sapply, tapply

R 2019. 9. 15. 11:03

1) apply
apply() 함수는 행렬이나 데이터 프레임을 행 단위로, 또는 열 단위로 행렬의 합이나 평균, 표준편차 등을 계산할 때 쓴다. 
먼저 행렬을 하나 아무렇게나 만든다.

 

> a<-matrix(c(2,5,3,4,5,2,4,3,5,2,1,1),3,4,byrow=T) 
> a  
     [,1] [,2] [,3] [,4]  
[1,]    2    5    3    4  
[2,]    5    2    4    3  
[3,]    5    2    1    1 


3 x 4 행렬이다. 첫번째 인자는 행렬 변수, 두번째 인자는 1 또는 2인데 1이면 행 단위로 계산한다는 뜻이고, 2이면 열 단위로 계산한다는 뜻이다. 세번째 인자는 연산할 함수 이름이다. 그러니까 위의 3 x 4 행렬의 원소들을 행 단위로 합하고 싶으면

 

> apply(a,1,sum)  
[1] 14 14  9 


같은 행렬의 원소들 각 열의 평균을 구하고 싶으면

 

> apply(a,2,mean)  
[1] 4.000000 3.000000 2.666667 2.666667 


2) lapply
apply랑 비슷한데 리스트나 데이터 프레임을 입력값으로 쓰고, 출력값은 리스트 형태로 나온다. 변수 별로 합이나 평균을 계산하기 때문에 apply에서 썼던 두번째 인자(1 또는 2)는 필요 없다.

 

> b<-data.frame(a)
> b 
  X1 X2 X3 X4 
1  2  5  3  4 
2  5  2  4  3 
3  5  2  1  1 
> lapply(b,mean) 
$X1 
[1] 4 

$X2 
[1] 3 

$X3 
[1] 2.666667 

$X4 
[1] 2.666667 


3) sapply
lapply와 거의 비슷한데 입력값은 리스트나 데이터 프레임을 쓰지만, 출력값은 리스트가 아닌, 벡터 형태를 쓴다.

 

> d<-c(1,2,3,4) 
> e<-c(3,2,4,3) 
> f<-list(d,e) 
> g<-data.frame(d,e)
> f 
[[1]] 
[1] 1 2 3 4 

[[2]] 
[1] 3 2 4 3 

> g 
  d e 
1 1 3 
2 2 2 
3 3 4 
4 4 3 
> sapply(f,mean) 
[1] 2.5 3.0 
> sapply(g,mean) 
  d   e  
2.5 3.0  
> class(g) 
[1] "data.frame" 
> class(sapply(g,mean)) 
[1] "numeric" 

 

4) tapply
변수가 여러 개 있을 때 한 변수를 다른 변수의 값을 기준으로 합이나 평균을 계산할 때 쓴다. 첫번째 인자는 계산하고자 하는 변수, 두번째 인자는 기준으로 삼는 변수, 세번째 인자는 함수 이름이 된다.

먼저 과일(fruit)과 중량(weight) 두 개의 변수를 만든다.

 

> fruit<-c("banana","apple","apple","banana","orange","banana") 
> weight<-c(2,3,3,5,2,5) 


둘 다 여섯개의 원소를 갖고 있는데 아직 data.frame() 함수를 써서 둘을 붙이진 않았지만 tapply() 함수를 쓸 땐 다음과 같이 합쳐진 테이블이라고 생각한다.

 

no

fruit

weight

1

banana

2

2

apple

3

3

apple

3

4

banana

5

5

orange

2

6

banana

5


즉 총 여섯개의 과일이 있고 그 중 바나나가 셋이며, 사과는 두 개, 오렌지는 하나이다. 과일들은 각각 중량 정보를 갖고 있다. tapply() 함수는 다음과 같이 쓴다.

 

> tapply(weight,fruit,mean) 
 apple banana orange  
     3      4      2  


과일 이름을 기준으로 사과끼리, 바나나끼리, 오렌지끼리 평균을 구해서 테이블을 만들었다. data.frame() 함수로 합친 데이터의 경우엔 변수 이름 쓸 때만 주의하면 된다.

 

> fruit_weight<-data.frame(fruit,weight) 
> tapply(fruit_weight$weight,fruit_weight$fruit,mean) 
 apple banana orange  
     3      4      2  


여기서 attach()를 쓰면 처음에 했던 것처럼 data.frame()이라도 변수 이름만 간단하게 쓰는게 가능하다.

 

> rm(fruit,weight) 
> attach(fruit_weight) 
The following objects are masked _by_ .GlobalEnv: 

    fruit, weight 

> tapply(weight,fruit,mean) 
 apple banana orange  
     3      4      2  
Posted by jujaeuk
,

2018년 7월 고용 동향

시사 2018. 8. 27. 18:02

이걸 보기 전에 먼저 보면 좋은 글: 고용 통계 기본 용어에 대해 알아보자

 

원래 고용 동향을 매달 열심히 보는 편은 아니지만 이번 달엔 유달리 "일자리 상황이 나빠졌다"는 보도가 많이 나왔고 그 보도의 시발점이 된 것이 바로 이 <2018년 7월 고용 동향>이라 한번 자세히 살펴보기로 했다.

 

<2018년 7월 고용동향>은 2018년 8월 17일 쯤에 통계청에서 발표됐다. 거기서 나온 주요 수치는 대략 이러하다.

 

출처: <2018년 7월 고용동향>, 통계청

 

참고로, 15세 이상 경제활동인구 전체를 대상으로 한 고용률은 61.3%인데, OECD에서는 고용률 계산할 때 65세 이상 인구는 빼고 하기 때문에 통계청에서는 두 가지를 다 보여주고 15-64세 기준 고용률인 67.0%옆에는 'OECD 비교기준'이란 말을 써 놨다. 1999년 6월부터 지금까지 대략 19년 동안 취업자수를 보면 다음 그림과 같다.

 

우리나라 취업자수

 

자료: 통계청 <경제활동인구조사>

 

그림만 보면 일단 규칙적인 패턴을 반복하면서 꾸준히 상승하는 경향을 보여 왔고 최근에 뭐 특별히 무슨 큰 일이 있었던 걸로 보이진 않는다. 고용은 계절 요인의 영향을 많이 받는다. 즉, 일년 중 사람을 뽑는 시기와 내보내는 시기가 일정하고 규칙적으로 증가했다 감소하는 패턴을 보이기 때문에 고용이나 취업의 변화를 볼 땐 지난 해 같은 달 수치와 비교한다. 이걸 전년동월대비라 한다.

 

고용률(15세 이상)은 전년동월 대비 0.3%p 떨어졌고 OECD 기준 고용률(15-64세)은 전년동월 대비 0.2%p 떨어졌다. 29세 이하와 60세 이상에서 0.2%p씩 조금 상승하고 40대에서 0.7%p가 하락했다고 나온다.

 

 

출처: <2018년 7월 고용동향>, 통계청

 

산업별로는 저렇게 나왔다고 한다. 위에 그림은 아마 산업 대분류 기준으로 취업자수가 늘어난 산업 1, 2, 3위와 취업자수가 감소한 산업 1, 2, 3위를 모은 것으로 보인다. 보건업및사회복지서비스업, 정보통신업, 금융및보험업 취업자가 늘어났고 제조업, 사업시설관리지원및임대서비스업, 교육서비스업에서 줄어들었다. 암튼 이렇게만 보면 보건업및사회복지서비스업은 성공했고, 제조업은 망한 것 같다. 하지만 그렇게 단순하게 보면 안되고 무슨 일이 있었는지 세분류로 내려가서 살펴 봐야 할 것이다. (더 자세한 내용은? 난 바빠서 이만...)

 

2018년 7월 경제활동인구조사를 통해 조사된 우리나라 취업자수는 2,708만 3천명으로 전년 동월 대비 5천명이 증가했다고 한다. 이 5천명이란 숫자가 언론에서 얘기하는 "고용쇼크"의 근거가 됐다. "정부에서 일자리를 만들겠다고 그렇게 예산을 많이 쓰고 했는데, 일년동안 불과 5천개의 일자리 밖에 못 만들었다."는 스토리가 여기서 나온다. 근데 바로 지난달 2018년 6월 고용동향을 보면 전년동월대비 취업자수 증가가 10만 6천 4백명이라고 나오는데 지난달을 기준으로 같은 논리를 적용하면 "작년 6월부터 올해 6월까지 일년동안 10만 개가 넘는 일자리가 만들어졌다." 라는 얘기가 되는데, 좀 이상하지 않은가. 왜 한달 만에 완전히 딴 얘기가 되냐고

결국 이것도 전체 그림을 보고 구조적인 특징을 파악해야 된다는 얘기가 나온다. 다음 그림은 경제활동인구조사 데이터를 가지고 전년동월대비 취업자수 변화를 뽑은 것이다.

 

전년동월대비 취업자수 증감

자료: 통계청 <경제활동인구조사> (단위: 천명)

 

구조적 특징이 보이시는지? 나는 잘 안 보인다. 이번달에 5천명이 나와서 큰일이라고 하는데 당장 다음달인 2018년 8월 고용동향에 10만이나 20만이 찍힌다 하더라도 그리 신기하진 않을 것 같다. 그땐 또 뭐라고 할건가 (물론 마이너스가 찍힐 수도 있다.)

 

여기서 문득 드는 생각이, 우리나라의 지난달 고용률(전체 61.3%, OECD기준 67%)이나 실업률(3.7%)이 높은 건지 낮은 건지 잘 모르겠다는 거다. 감을 잡기 위해서 해볼 수 있는 방법이 두 가지 정도가 있는데 하나는 지금까지 우리나라 고용률과 실업률의 변화를 보는 것이고 다른 하나는 다른 나라의 고용률, 실업률과 비교해 보는 것이다.

 

먼저, 우리나라 고용률의 변화를 보자.

 

고용률(15세 이상 인구)

자료: 통계청 <경제활동인구조사> (단위: %)

 

최근엔 규칙적인 패턴 중에 높을 땐 61% 이상, 낮을 땐 59% 전후를 찍고 있는 수준인데 뭔 일이 있었던 2010년 전후를 제외하고 나면 과거에 비해 근소하게 올라갔다. 우리나라 고용 구조가 극적으로 변한 것이 1997년일 테니 그 전후를 비교해 보는 것이 의미 있지 않을까 싶지만 불행히도 인터넷에서 구할 수 있는 통계청 데이터에는 그 시절 데이터가 없다.

 

아래 그림은 우리나라 고용률을 OECD 다른 나라들과 비교한 것이다.

 

2018년 2/4분기 OECD 국가 고용률 비교(15-64세 기준)

자료: OECD (단위: %))

 

글씨가 작아서 잘 안 보이는데... 우리나라는 OECD 36개국 중 아홉번째로 고용률이 낮은 편에 속하며 OECD 평균보다 1.6%p 낮다.)

 

다음으로 실업률)

 

우리나라 실업률

자료: 통계청 <경제활동인구조사> (단위: %)

 

고용률보다는 불규칙적이지만 이것도 1년 주기로 패턴이 있다. 해마다 2월에 고용률이 아래로 제일 뾰족하고 실업률은 위로 제일 뾰족한 거 보면 3월에 다시 뽑았다가 일년동안 일 시키고 1, 2월에 짜르는 회사들이 많은가보다. 최근엔 2010년에서 2014년까지 좀 떨어지는 듯 보였다가 2015년부터 다시 안 좋아졌다.

 

2018년 2/4분기 OECD 국가 실업률 비교(15-64세 기준)

자료: OECD (단위: %)

 

실업률을 기준으로 보면 우리나라는 OECD 안에서 꽤 좋은 나라이다. (근데 그럴 리가 없으니 실업률이 믿을만한 지표가 아닌 것이지.) OECD 36개국 중 여덟번째로 낮고, 평균(5.4%)보다 1.6%p 낮다.

 

교훈:

고용의 패턴은 쉽게 변하지 않는다. 고용 상황이 변하는 데는 돈도 많이 들고 시간도 오래 걸린다. 그래서 장기적인 걸 봐야 하고 추세적인 특성을 봐야 제대로 얘기할 수 있다.

 

최근에 상황이 나빠진 것은 분명하다. 하지만 2018년 7월 전년동월대비 취업자수가 5천명 증가한 것을 "고용참사"나 "고용쇼크"라고 부르는 건 좀 과장이다.("4차 산업혁명"에 비하면 과장이 아닌 걸지도)

Posted by jujaeuk
,

고용 통계 얘기하기 전에 먼저 알아야 될 게 있는데 좀 헷갈리니까 정신 똑바로 차려야 한다. 용어는 다음과 같이 분류된다.

 

실업자나 비경제활동인구나 둘다 돈을 벌지 않는 사람인 건 맞는데, 실업자는 적극적 구직활동을 했으나 취업에 성공하지 못해서 돈을 못버는 사람이고 비경제활동인구는 여러 가지 이유로 자발적으로 돈을 안 버는 사람들이다. 열심히 일자리를 알아 봤는데 직업을 못 구해서 실업자였던 사람이 구직활동을 아예 포기하게 되면 비경제활동인구가 된다. 고용지표로 제일 널리 쓰이는 것은 실업률과 고용률이다. 실업률은 경제활동인구 대비 실업자 비율이다.

 

 

실업자는 적극적 구직활동을 하면서 직업이 없는 사람이기 때문에, 일자리 알아보는 걸 포기했던 사람들이 대거 의욕이 생겨 갑자기 죄다 일자리를 알아보기 시작하면 똑갈은 일자리 상황임에도 불구하고 실업률이 올라가는 현상이 발생한다.

 

 

일단 적극적 구직과 구직 포기 사이의 경계를 명확히 하기도 어렵거니와 실업자가 구직을 포기하는 것이 더 나쁜 상황임에도 실업률이 개선되는 것처럼 보이는 것이 뭔가 마음에 들지 않는다. 그래서 최근엔 고용률을 쓰는 경우가 많아졌는데 고용률은 15세 이상 인구 대비 취업자 비율이다.

 

 

취업률은 사람들이 실업자와 비경제활동인구 사이에서 오가더라도 변하지 않는다는 장점이 있다. 다만 고용정책을 펼칠 때 취업률만 알고 있다면 필요한 일자리가 얼마나 되는지 알지 못하는 문제가 발생할 수도 있다. (기껏 일자리를 만들어 줬더니 원래 아무도 취직할 생각이 없었다던가...) 그래서 두 수치를 같이 본다.

 

다음으로, 취업과 고용의 차이를 알아야 한다. 취업은 돈을 벌 수 있는 직업을 얻은 것이다. 아무도 나를 안 뽑아 주면 내가 회사를 차려도 취업이 된 것이다. 고용은 임금근로자, 즉 누군가 임금을 지급하고 고용한 경우만 해당한다. 따라서 취업자수에는 자영업자가 포함되고 고용에는 제외된다. (자영업자 뿐만 아니라 무급가족종사자도 제외된다.)

 

 

그래서, 15세 이상 인구 대비 취업자수를 고용률이라고 부르기 시작한 것은 처음에 누군가가 잘못한 것이다. 우리나라에서 취업자수, 고용률은 통계청의 <경제활동인구조사>에서 만들고, 고용통계와 실업률은 고용노동부의 <사업체노동력조사>에서 만든다.

'시사' 카테고리의 다른 글

스마트시티?  (0) 2020.08.17
2018년 7월 고용 동향  (0) 2018.08.27
블록체인에 대해 알아보자  (0) 2018.06.08
인터넷 망중립성 논쟁과 Economides and Tåg(2012)  (0) 2018.04.29
시장획정과 SSNIP 테스트  (0) 2018.04.09
Posted by jujaeuk
,

아래 그림은 Git으로 버전이 관리되는 파일의 라이프 사이클을 알기 쉽게 그림으로 그린 것이다.

 

그림 출처: http://git-scm.com

 

일단 작성해서 저장하고 Git으로 아무것도 안 한 파일은 untracked 파일이고, 한번 add하기 시작했으면 Git으로 remove하기 전까지는 전부 tracked 파일이다. 왜 굳이 저 순서로 그림을 그렸는지는 잘 모르겠으나, 순서를 말로 풀면 다음과 같다.

 

1_ Git의 작업 순서

 

1. untracked 파일을 git으로 add하면 staged 파일이 된다. (파일이 staging area에 들어갔다고 한다.)

2. staged 파일을 git으로 commit하면 unmodified 파일이 된다.

3. unmodified 파일을 메모장이나 편집기로 수정(edit)하면 modified 파일이 된다.

4. modified 파일을 git으로 add하면(stage하면) 다시 staged 파일이 된다.

5. unmodified 파일을 git으로 remove하면 untracked 파일이 된다.

 

일반적으로는 한번 add, commit가 되고 나면 edit -> add -> commit -> edit ...가 계속 반복된다.

 

2_ 파일 상태 확인하기

 

$ git status

 

이렇게 하면 그 아래 메세지가 뜨는데 add 안한 파일이 있는지, commit 안한 파일이 있는지를 알려준다.

 

3_ staged와 unstaged 파일의 내용 차이 보기

 

$ git diff

 

4_ add 안하고 바로 commit하기

 

$ git commit -a

 

5_ 삭제하기

여기서 삭제한다는 말은 파일을 실제로 날려 먹는 것이 아니고, Git에서 제외시켜 더 이상 추적을 하지 않는다는 뜻이다.

 

$ rm$ git status$ git rm filename (tracked 파일 삭제)$ git commit (삭제됨)

'Git & Github' 카테고리의 다른 글

Git 처음 시작하기  (0) 2018.07.10
Posted by jujaeuk
,

 

보미는 집에 들어와 당분간 독방에 격리됐습니다. 삼순이 한테 옮을 수도 있는 병이라도 있는지 확인을 해야 된다고 합니다. 검사 결과가 나올 때까지 한 일주일 정도는 삼순이와 따로 있었습니다.

 

 

제 방을 보미에게 주고 입구는 드나들지 못하게 철망으로 막았습니다. 아직 어려서 밥도 조금씩 네시간마다 한번씩 줘야 했습니다. 다행히 회사가 집에서 가까와 점심시간에 집에 와서 보미 밥을 줬습니다.

 

 

길에서 어느 정도 경력을 쌓고 우리 집에 들어온 삼순이와 달리

보미는 태어난지 얼마 되지 않아 줍혀서 들어왔습니다.

 

 

그래서 보미는 삼순이와 여러 가지로 달랐습니다.

겁이 없이 천방지축이고 호기심도 많으며, 경계심도 별로 없어 보였습니다.

 

 

독방에 있는 동안은 삼순이와 접촉할 일이 없으니 그저 편했겠지만...

 

 

피할 수 없는 순간이 다가오고 있었습니다. 왼쪽 방엔 삼순이, 오른쪽 방엔 보미.

철망 너머로 훤히 보였기 때문에 서로의 존재는 알고 있었겠지요.

 

 

삼순이, 슬며시 기어 나와 옆방을 기웃거립니다.

도대체 어디서 굴러 들어온 녀석인가...

 

 

드디어 철망을 사이에 두고 조우합니다. (이 사진이 첫 대면은 아니겠으나)

처음엔 삼순이가 하악질도 하고 그랬는데

생각보다 서로 적대하진 않아서 한시름 놨습니다.

 

 

서로 가까이 다가갑니다.

덩치는 삼순이가 훨씬 컸지만 겁은 삼순이가 더 많아 보였습니다.

 

 

서로 자기소개라도 하는 듯

"여기까지 오느라 고생이 많았소이다. 이 집 그런대로 지낼만은 하오."

 

 

"그나 저나 검사 결과는 언제 나오는 것이오? 방이 좀 좁구려..."

 

 

철망 쓰러지지 말라고 박스를 받쳐 왔는데 이리 저리 나갈 틈을 찾고 있는 듯 보였습니다. 보미도 슬슬 바깥 세상이 궁금해지기 시작했던 것이죠.

 

 

며칠이 지나 검사 결과가 나왔습니다. 다행히 보미는 병 같은 건 없었고 건강했습니다.

삼순이, 거실 베란다에서 보미를 맞이할 준비를 하며 눈치를 살핍니다.

"특별히 조심할 건 없는거죠?"

 

 

조금 쑥스러운듯 시선을 돌리는 삼순이. 철망 없이 삼순이를 보게 된 보미.

"여어..."

 

 

이렇게 둘이는 가족이 되었습니다.

'우리집 고양이' 카테고리의 다른 글

보미 처음 온 날 (2013. 4. 11)  (0) 2018.06.27
삼순이 (2012.10 ~2013. 3)  (0) 2018.06.05
삼순이 (2012. 5 ~ 9)  (2) 2018.05.28
봄, 그리고 삼순 (2012. 3. 24 - 4. 30)  (0) 2018.05.05
토요일 아침 삼순 (2012. 3. 17-23)  (0) 2018.04.11
Posted by jujaeuk
,

푸에르토 리코(Puerto Rico)

 

 

1_ 개요

 

식민지 섬에서 농장을 만들어 식민지 주민을 부려서 경작을 하고 본국에 실어 보내는, 어찌 보면 좀 인종주의적(?) 설정의 게임입니다. 3인용부터 5인용까지 가능합니다. 2002년에 처음 출시됐는데 꽤 몇년 동안 보드게임긱(boardgamegeek.com)에서 랭킹 1위를 차지했던 명작 게임입니다. (요새는 좀 내려가 10위권 밖입니다.)

 

2_ 재료

 

 

플레이어 보드입니다. 플레이어가 각자 한 판씩 갖습니다. 아래 초록색이 아일랜드(island) 스페이스, 위 베이지색이 시티 스페이스입니다. 아일랜드 스페이스에는 퀘리나 플랜테이션을 짓고, 시티 스페이스에는 빌딩을 짓습니다.

 

 

게임 보드입니다. 가운데 놓고 같이 씁니다. 플레이어들이 돈 주고 살 수 있는 빌딩을 쌓아 두는 빈자리와 돈을 쌓아둘 수 있는 '은행'이 있습니다.

 

 

게임보드에 올려 놓게 되는 빌딩 카드입니다 작은 것과 큰 것 합해서 전부 49개입니다.

 

 

가버너(governor)와 여덟 장의 롤(role) 카드입니다. 가버너는 스타팅 플레이어를 가리킵니다. 롤 카드는 각각 새틀러(settler), 메이어(mayor), 빌더(builder), 크래프트맨(craftsman), 트레이더(trader), 캡틴(caption), 그리고 두 장의 프로스펙터(prospector)로 구성됩니다.

 

 

더블룬(돈) 칩입니다. 동그란 모양으로 1단위(46개)와 5단위(8개)가 있습니다. 더블룬은 뒷면에도 똑같이 숫자가 인쇄되어 있고 1단위와 5단위가 크기가 다릅니다.

 

 

VP(승점) 칩입니다. 더블룬이랑 비슷하게 생겼지만 이건 육각형입니다. 이것 또한 1단위(32개)와 5단위(18개)가 있습니다. VP는 뒷면이 주황색으로 한 면에만 숫자가 인새되어 있고 크기도 똑같습니다. 뒤집어 놨을 때 1단위와 5단위가 구분이 안되게 하려고 그렇게 만들었습니다.

 

 

아일랜드(island) 타일(58개)입니다. 8개의 퀘리(quarry, 채석장)과 50개의 플랜테이션 타일로 구성돼 있습니다. 플랜테이션은 커피 8개, 담배 9개, 옥수수 10개, 설탕 11개, 인디고 12개입니다.

 

 

주민을 실어 나르는 콜로니스트 쉽, 상품을 거래하는 트레이딩 하우스, 수확한 작물을 실어 나르는 카고 쉽입니다.

 

 

상품 말입니다. 노란색이 옥수수(corn), 파란색이 인디고(indigo), 흰색이 설탕(sugar), 황토색이 담배(tobacco), 갈색이 커피(coffee)입니다.

 

 

콜로니스트 말입니다.

 

3_ 세팅

 

세팅은 몇인용이냐에 따라 차이가 있습니다.

 

먼저 스타팅 플레이어를 정하고 시계 방향으로 2nd, 3rd, 4th, 5th 플레이어가 됩니다. 스타팅 플레이어는 처음에 가버너를 갖습니다.

 

1) 초기 자원

플레이어들은 플레이어 보드 외에 기본적인 것들을 받고 시작합니다.

 

 

 3인용

4인용

5인용 

더블룬(돈) 

 3

 4

플랜테이션 타일

 가버너(governer)는 인디고

2nd : 인디고

3rd : 옥수수

2nd : 인디고

3rd, 4th : 옥수수 

2nd, 3rd : 인디고

4th, 5th : 옥수수 

 

2) 롤 카드

 

3인용 

4인용 

5인용 

6장(프로스펙터 2장 제외) 

7장(프로스펙터 1장 제외) 

8장 

 

3) 카고 쉽

카고 쉽은 네모 박스 갯수에 따라 4부터 8까지 있는데 그 중 세 개만 게임에 사용합니다.

 

3인용 

4인용 

5인용 

4/5/6 

5/6/7 

6/7/8 

 

4) 콜로니스트 말

전부 사용하는 것이 아니고 갯수 제한이 있습니다.

 

3인용 

4인용 

5인용 

55개 

75개 

95개 

 

5) 콜로니스트 쉽

콜로니스트를 올려 놓는데 최초 세팅 시 몇인용이냐에 따라 올려 놓을 콜로니스트 수가 다릅니다.

 

3인용 

4인용 

5인용 

3개 

4개 

5개 

 

6) VP 칩

 

3인용 

4인용 

5인용 

75pts 

100pts 

122pts 

 

7) 플랜테이션 타일

- 퀘리 8개는 따로 모아서 쌓아 놓습니다.

- 나머지 타일은 안 보이게 뒤집어서 잘 섞은 다음 플레이어 수+1개만큼 보이게 꺼내서 놓습니다.

 

나머지는 아래 그림을 참고하면 될 듯합니다.

 

 

4_ 라운드(round) 진행

 

푸에르토 리코는 여러 번의 라운드로 진행됩니다. 다음은 한 라운드의 진행 순서입니다.

 

1) 라운드가 시작되면 가버너부터 시작하고 시계 방향으로 돕니다.

 

2) 자기 차례가 되면 롤 카드를 하나 가져와서 자기 앞에 두고 롤에 써 있는 액션을 합니다.

 

3) 시계 방향으로 돌아가며 같은 롤의 액션을 합니다.

 

4) 한바퀴가 다 돌면 페이즈(phase)가 하나 끝난 겁니다. 아까 롤 카드를 가져 왔던 사람 왼쪽의 플레이어가 남아 있는 롤 카드 중에 하나를 가져와서 아까와 똑같은 방법으로 액션을 합니다.

 

5) 모든 플레이어가 롤 카드를 하나씩 가져오게 되면 남아 있는 롤카드는 세 장이 됩니다. 그 세 장의 롤카드 위에 각각 1 더블룬씩 올려 놓습니다. 모든 플레이어는 가져 왔던 롤 카드를 반납합니다. 가버너는 자기 왼쪽 플레이어에게 가버너를 넘깁니다. 이것으로 한 라운드가 끝납니다.

 

 

5_ 롤 카드 내용

 

롤 카드를 가져올 때 카드 위에 더블룬이 있으면 그 더블룬은 롤 카드를 가져온 플레이어가 먹습니다.

 

플레이어가 롤 카드를 가져 오면 카드를 가져 온 사람부터 시계방향으로 그 롤에 해당하는 액션을 합니다. 대신 카드를 가져온 사람만이 할 수 있는 추가적인 액션(프리빌리지)이 있습니다.

 

카드를 가져 오는 것은 플레이어가 반드시 해야 하는 의무이지만, 액션이나 프리빌리지를 할 지 안 할지 결정하는 것은 플레이어의 자유입니다. (롤 중에 캡틴은 예외인데 캡틴 롤의 액션은 안할 수 없습니다.)

 

1) 세틀러(settler)

- 액션 : 플랜테이션 타일 하나를 가져 와서 내 섬 빈자리에 놓습니다. (하나를 가져 왔으면 타일 더미에서 임의로 한 장을 뽑아 아까 뽑은 자리에 보이게 놔 둡니다.

- 프리빌리지 : 플랜테이션 대신 퀘리 타일을 가져올 수 있습니다.

 

2) 메이어(mayor)

- 액션 : 콜로니스트를 하나 가져 옵니다. 나머지 플레이어들도 시계방향으로 하나씩 가져 옵니다. 플레이어는 자기 콜로니스트는 얼마든지 이동시킬 수 있습니다. 한 바퀴를 다 돌았는데 콜로니스트가 남아 있으면 계속 시계방향으로 돌면서 하나씩 가져 옵니다.

- 프리빌리지 : 콜로니스트를 추가로 하나 더 가져 옵니다.

* 플랜테이션, 퀘리, 빌딩에는 한 개에서 세 개까지의 써클이 있습니다. 가져 온 콜로니스트는 원하는 타일의 써클에 둡니다. 타일에 콜로니스트가 최소한 하나 이상 있으면 점유된 것인데, 오직 점유된 타일만이 작동을 합니다.

* 혹시 빈 서클이 없어 콜로니스트가 남으면 남는 콜로니스트는 산 후앙에 둡니다. 

- 메이어 페이즈가 끝났으면 메이어(메이어 롤 카드를 가져온 사람)는 빈 콜로니스트 쉽에 콜로니스트를 가져다 늫는데, 모든 플레이어의 빌딩이 빈 써클의 개수를 세어 그 총합에 해당하는 만큼 가져 옵니다. 빈 써클의 수가 플레이어 수보다도 작으면 플레이어 수 만큼 가져다 놓습니다.

 

3) 빌더(builder)

- 액션 : 빌딩을 짓습니다. 게임 보드에서 빌딩을 가져와 내 플레이어 보드 빌딩 에리어 빈 곳에 놓습니다. 빌딩 첫번째 빈 서클에 회식 숫자가 빌딩 코스트인데 그만큼 돈을 내야 가져와서 지을 수 있습니다.

- 프리빌리지 : 빌딩 코스트가 1만큼 내려갑니다.

 

* 퀘리의 기능

점유된 퀘리가 있으면 빌딩 코스트가 내려갑니다.

- 점유된 퀘리가 한 개 : 게임 보드 1컬럼 빌딩의 코스트가 1만큼 내려갑니다.

- 점유된 퀘리가 두 개 : 2컬럼 빌딩의 코스트가 2만큼 내려갑니다.

- 프리빌리지는 퀘리로 인한 할인에 또 추가 되는 할인입니다. 빌딩 코스트가 마이너스로 내려가진 않습니다.

 

4) 크래프트맨(craftsman)

- 액션 : 상품을 생산합니다. 가져와서 돈이랑 같이 나침반 위에 둡니다.

* 생산은 프로덕션 빌딩을 점유하는 콜로니스트의 수와 플랜테이션을 점유하는 콜로니스트 수 중에 작은 값 만큼 생산됩니다. 즉 인디고 플랜트를 점유한 콜로니스트가 넷이고, 인디고 플랜테이션을 점유한 콜로니스트가 셋이라면 세 개의 인디고가 생신된다는...

- 프리빌리지 : 상품 하나를 더 생산합니다.

 

5) 트레이더(trader)

- 액션 : 최대 한 개의 상품을 트레이딩 하우스 빈 칸에 놓을 수 있습니다. 트레이더가 상품을 하나 놓으면 그 다음 사람 또한 상품을 놓을 수 있는데 하우스에는 같은 상품이 두 개 들어갈 수 없습니다. 상품 가격은 트레이딩 하우스 카드에 써 있습니다.

- 프리빌리지 : 원래 가격에 1더블룬을 더 받고 팔 수 있습니다.

 

6) 캡틴(captain)

- 액션 : 플레이어들은 카고 쉽에 상품을 실어야 합니다.

- 프리빌리지 : VP를 1점 더 받습니다.

* 카고 쉽 한 척은 한 종류의 상품만 실을 수 있습니다.

* 한 배에 어느 상품이 실렸으면 같은 상품을 다른 배에 실을 수 없습니다.

* 카고 쉽에 실을 수 있는 상품 갯수의 제한은 그려져 있는 네모의 숫자와 같습니다.

* 모든 플레이어는 가진 상품을 실을 수 있는 한 전부 실어야 합니다.

* 카고 쉽에 실은 상품 갯수만큼 (상품 종류에 상관없이) VP를 받습니다.

* 싣지 못한 상품 중 한 개를 골라 보관할 수 있습니다. (나침반 위에 둘 것) 나머지는 반납합니다.

* 자기 턴에서는 한 종류의 상품만 싣고 다음 턴으로 넘깁니다.

 

7) 프로스펙터(prospector)

- 액션 : 없음

- 프리빌리지 : 1더블룬을 받음

 

6_ 게임 종료

 

1) 조건

- 콜로니스트가 다 떨어졌을 때

- 플레이어 한 명 이상이 12개 시티 스페이스를 다 채웠을 때

- VP 칩이 소진됐을 때

 

2) 합산

- 내가 모은 VP 칩

- 빌딩 우측 상단에 써 있는 VP

- 점유된 라지 빌딩(large building)에 있는 추가 VP

 

이걸 다 합쳐서 가장 높은 VP를 얻은 플레이어가 승자가 됩니다.

 

7_ 빌딩 내용

 

A. small buildings

1) small/large market

트레이더 페이즈에서 팔 때 1/2더블룬을 더 받습니다.

 

2) small/large warehouse

캡틴 페이즈에서 1/2 종류의 상품을 안 버리고 보관합니다.

 

3) hacienda

세틀러 페이즈에서 플랜테이션 타일 하나를 추가로 더 가져옵니다.

 

4) construction hut

세틀러 페이즈에서 플랜테이션 대신 퀘리를 가져올 수 있습니다.

 

5) hospice

세틀러 페이즈에서 콜로니스트 1명을 추가로 가져올 수 있습니다.

 

6) office

트레이더 페이즈에서 먼저 하우스에 들어간 상품과 같은 상품을 팔 수 있습니다.

 

7) factory

크래프트맨 페이즈에서 생산한 상품의 종류가 두 개 이상이면 추가로 더블룬을 받습니다.

1/2/3/4/5 종류에 따라 각각 +0/1/2/3/5 더블룬 씩 더 받습니다.

 

8) university

빌더 페이즈에서 빌딩에 콜로니스트 하나를 추가로 가져 옵니다.

 

9) harbor

캡틴 페이즈에서 상품을 배애 한번 실을 때마다 +1VP를 받습니다.

* 자기 턴이 또 돌아와 다른 종류의 상품을 또 실으면 또 +1VP 받습니다.

 

10) wharf

캡틴 페이즈에서 한 종류의 상품 전부를 가상의 배에 싣고 VP들 받습니다. 상품 갯수 제한은 없고, 기존의 카고 쉽에 실린 상품과 같은 종류여도 상관 없습니다.

 

B. large buildings

11) guild hall

게임이 끝났을 때 build hall이 점유됐으면 자기가 지은 large production building 하나 당 2VP, small production building 하나당 1VP (production building은 점유 안되어도 상관 없음)

 

12) residence

아일랜드 스페이스가 점유된 숫자에 따라 VP를 추가로 받음 (자세한 내용은 카드에)

 

13) fortress

콜로니스트 3개 당 1VP

 

14) customs house

4VP 당 1VP

 

15) city hall

보라색 빌딩(점유되든 안되든 상관없음) 하나 당 1VP. 계산할 때 city hall도 카운트함

Posted by jujaeuk
,

윈스턴 챙이 쓰고 이제원이 옮긴 O'Reilly의 "R Graphics Cookbook"에 나은 예제를 썼다. 아래 소스를 직접 테스트해 보고 싶으면 데이터 라이브러리를 호출하기 바란다.

 

> install.packages("gcookbook")
> library(gcookbook)

 

R에서 두 개의 변수를 각각 x축, y축에 넣고 점으로 된 그래프인 산점도(scatterplot)을 그리려면 일단 기본 그래픽 함수로도 할 수 있다. 코드는

 

> plot(mtcars$wt, mtcars$mpg)

 

이렇게 쓰고 그림은 아래와 같이 나온다.

 

기본적인 요소만 갖춘 매우 심플한 그래프라 할 수 있다. 저 그래프가 너무 심심하다고 생각했는지 누군가 좀 더 예쁘게 그래프를 그려주는 라이브러리를 개발했다. 바로 'ggplot2'이다. 일단 라이브러리 설치부터 하자.

 

> install.packages("ggplot2")
> library(ggplot2)

ggplot2를 이용해 산점도를 그려보면 다음과 같다. 코드는

 

> ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()

 

 

문법이 좀 독특하다. ggplot() 함수 안에 데이터와 aes()함수를 쓰고, aes() 안에 x축 변수와 y축 변수 이름을 쓴다.  aes란 aesthetic의 줄인 말이다. ggplot() 함수만으로는 그리려는 그래프가 무슨 그래프인지 정해지지 않았다. 당연히 ggplot() 함수까지만 쓰면 화면에 아무 그림도 없다. 산점도를 그리려면 ggplot() 뒤에 +를 쓰고 geom_point() 함수를 써야 한다.

 

ggplot2의 기본 형식은 이런식이다.ggplot() 함수를 먼저 쓰고, 그 다음에 geom_point() 함수 같은 함수를 써서 그리려고 하는 게 산점도인지 선 그래프인지 결정한다.

Posted by jujaeuk
,