2024-07-22

R 배우기 - dplyr사용하기

R로 데이터 분석할 때 dplyr가 정말 유용합니다. 예를 들어, dplyr를 쓰면 for loop를 쓸 일이 거의 없어요.

그럼 기본적인 사용법을 볼까요. 

dplyr 패키지를 인스톨하고 (install.packages("dplyr")), 라이브러리를 불러줍니다.

> library(dplyr)

data frame을 하나 만들어봅시다.

> df <- data.frame(name=c('Alice', 'Brian', 'Chris'), age=c(10, 20, 30), height=c(5.2, 5.7, 6))
> df
   name age height
1 Alice  10    5.2
2 Brian  20    5.7
3 Chris  30    6.0

dplyr에서는 %>% 라는 "파이프"를 사용하는데요, 파이프를 사용하면 왼쪽의 결과물이 자동으로 오른쪽 함수의 input이 됩니다.

예를 들어, dplyr의 filter()라는 함수는 row를 선택할 때 사용합니다. Alice의 데이타를 보려면,

> filter(df, name == 'Alice')
   name age height
1 Alice  10    5.2

파이프로도 똑같은 일을 할 수 있습니다.

> df %>% filter(name == 'Alice')
   name age height
1 Alice  10    5.2

파이프 %>% 왼쪽에 있는 df가 오른쪽에 있는 filter()함수의 input이 되는 것입니다.

dplyr에서 많이 쓰이는 select()라는 함수는 column선택할 때 사용됩니다. name, age, height의 세 개의 컬럼 중에서, name과 age만 보고 싶다면,

> select(df, name, age)
   name age
1 Alice  10
2 Brian  20
3 Chris  30

파이프로는 

> df %>% select(name, age)
   name age
1 Alice  10
2 Brian  20
3 Chris  30

여기서도 df가 select()함수의 input으로 들어간 것입니다.

만약 이름이 Alice가 몇 살인지 알고 싶다면, 위의 두 함수를 한 번 씩 적용하면 되겠죠.

> df1 <- filter(df, name == 'Alice')
> select(df1, name, age)
   name age
1 Alice  10

먼저 filter한 다음에 그 결과물을 df1에 잠시 저장한 다음 select했는데요. 이렇게 함수를 순차적으로 사용할 때, 파이프의 장점이 드러납니다. 

왜냐하면 파이프의 왼쪽의 결과물이 오른쪽 함수의 input이 되니까요.

> df %>% filter(name == 'Alice') %>% select(name, age)

   name age
1 Alice  10

이렇게 파이프를 사용하면, 중간에 df1을 따로 만들 필요가 없어요. 처음 filter()함수의 결과물이 select()함수의 input으로 들어간 것입니다.

그리고 위의 예제에서 보이는 것처럼, 어떤 순서대로 뭘 했는지 그 흐름대로 읽을 수 있으니 나중에 봤을 때에도 이해하기 편하죠. 

여기까지가, dplyr의 기본적인 사용 방법 입니다. 

(dplyr의 다양한 함수들은 https://dplyr.tidyverse.org 에서 찾아볼 수 있습니다.)


2024-07-21

책리뷰 - 최소 노력의 법칙 by 그렉 맥커운

어느 순간부터, 일을 한다는 자체에 대해서 생각하는 시간은 없어지고 있다. 왜냐하면 피.곤.하.니.까! 

하지만 그러다 보면 좁은 시야 때문에 뭔가를 놓치기 마련이다. 그래서 조금은 단조로울 수 있는 이 책의 제목이 흥미롭기도 하다. 어떻게 노력 좀 안하고 좋은 건 없는지 항상 궁금하니까...

이 책에서 제안하는 대로, 복잡한 것을 간소화 해서 내용을 정리하자면, 

번아웃 될 때까지 완벽주의적으로 무작정 일하지 말고, 

복잡한 일을 간소화 하고 기본 원리에 집중을 해서,

더 쉬운 방법으로 효율적으로 일하라.

는 책이다. 결국 그러고 보니 일하라는 책... 일합시다! :)

세상을 좀 쉽게 살아가는 데에 도움이 되는 얘깃 거리가 가득하다. 내용에 다 동의하지 않는다고 해도, 쉽게 가자는 주장에 대해선 시간 들여서 생각해 볼 만하다. 일은 다 복잡할 것이라는 편견 때문에 쉬운 길이 있는데도 어려운 방법 만을 파고 있을 때가 있으니까.

2024-07-20

더치페이 할 때, 영어로

여러 명이 밥 먹을 때 내가 먹은 것은 나 혼자 계산하고 싶을 때가 있죠. 예를 들어, 나만 뒤늦게 식사에 참여했다던지 할 때는 주문할 때 미리 I want this on a separate check 라고 말하면 됩니다.

또는 다들 더치페이를 하고 싶다면, 주문할 때 미리 서버에게 Please put this on sepearte checks 라고 하면 됩니다.

여기서 중요한 것은 주문할 때 그러니까 음식 나오기 전에 말해야 한다는 점 이예요. 그래야 분위기가 이상해지지 않거든요.

2024-07-07

책리뷰 - 평생 현금이 마르지 않는 투자법 by 박성현

평범한 finance관련 self-help book이라고 생각하고 읽기 시작했지만, 그냥 흥미 위주의 책은 아니었고, 시간을 두고 차근차근 읽어볼 만한 책이라고 생각한다. 근본적으로 필요한 만큼의 돈이란 건 결국은 주관적인 것이지만, 그럼에도 불구하고 돈과 투자에 대해서 최소한 객관적으로 맞는 방향의 얘기들이 있다고 생각한다. 이 책에서는 그런 얘기들만 해서 '나처럼 하면 돈 벌수 있다'고 주장하거나 '나만 아는 비법을 전수해준다'는 책들에 비해서 좀 지루하긴 하다. 어떻게 보면 누구나 알고 있고 누구나 할 수 있는 뻔한 얘기를 하고 있지만,  그 기본적인 얘기 들을 조근조근 친절하게 늘어놓는 방식이 맘에 든다.

여러가지 좋은 조언들이 있었지만, 다양한 cash flow channels를 만들어가라는 조언이 와 닿는다.