1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

dplyr備忘録

Last updated at Posted at 2019-12-28

はじめに

dplyr、大好きです。
dplyrと素晴らしい解説記事には大変お世話になっていますが、まだまだdplyrの実力の1割程度も引き出せてあげられていない気がしています。

この記事は、個人的に「便利そうだが咄嗟に出てこない」dplyr関数の使い方を書き留めておき、慣れるまでの参照先にするために書きます。
そして遠い未来、dplyrを使いこなした自分がこの記事を見返したとき、成長した感を味わいたいなァと思ってます。

間違ってること書いてたらご指摘いただけると嬉しいです。

dplyr::rename()

列の改名をしてくれる関数。

iris %>% dplyr::rename(sp = Species) %>% head(2)
# Sepal.Length Sepal.Width Petal.Length Petal.Width     sp
# 1          5.1         3.5          1.4         0.2 setosa
# 2          4.9         3.0          1.4         0.2 setosa

# これだと長い
cname <- colnames(iris)
cname[length(cname)] <- "sp"
colnames(iris) <- cname

dplyr::pull()

data.frameの一列を指定してvectorとして返してくれる関数。
vectorを引数として受け取る関数に渡す際にすっきり書けそう。

iris %>% head(10) %>% dplyr::pull(Sepal.Length)
# [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9

# これだとちょっとかっこ悪い
sl <- iris %>% head(10) %>% select(Sepal.Length)
sl[, 1]

dplyr::summarise_all()

すべての列に関数を適用し、それらの結果を1行のdata.frameとしてくれる関数。
group_byされてたらグループごとに結果を返す。
summarise_at, summarise_if で関数を適用する列を指定できるのでこれが便利そう。

iris %>% select(1:4) %>% 
  dplyr::summarise_all(funs(min, max))
# Sepal.Length_min Sepal.Width_min Petal.Length_min Petal.Width_min Sepal.Length_max
# 1              4.3               2                1             0.1              7.9
# Sepal.Width_max Petal.Length_max Petal.Width_max
# 1             4.4              6.9             2.5

# これだとかっこ悪い
for (i in seq(ncol(iris))) {
  for (fun in c(min, max)) {
    ...
  }
}

dplyr::case_when()

Cのswitch-caseのような関数。
if {} else if {} else if {}...をすっきり書けるとのことなので、mutate等の中で便利そう。

iris_ <- iris %>% 
  mutate(
    BigPet = case_when(
      (Petal.Length > 5.0 & Petal.Width > 2.0) ~ TRUE,
      TRUE ~ FALSE
    )
  )

随時書き足していく予定。

参考文献

https://heavywatal.github.io/rstats/plyr.html
https://kazutan.github.io/kazutanR/hands_on_170730/mutate.html

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?