1
1

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 1 year has passed since last update.

【備忘録】pivot_wider と pivot_longerを毎回忘れる

Posted at

ただの備忘録です。

ロングデータとワイドデータの変換は結構頻発するにもかかわらず、なぜかpivot_widerとpivot_longerの引数を毎回忘れてまう。

毎回ググっているが、みんなちゃんと書いてくれていてぱっと見、よくわからないので、最低限だとどうなるかここに残しとく。

とりあえずこんなデータがある。

df <- tibble(ID = rep(1:3, 2),
             questionaire = c(rep("Q1",2), rep("Q2",2)),
             ans = runif(4, 1, 5) %>% round(0))

> df
# A tibble: 4 × 3
     ID questionaire   ans
  <int> <chr>        <dbl>
1     1 Q1               1
2     2 Q1               2
3     1 Q2               3
4     2 Q2               3
  • これはいわゆるロングデータだけれども、ワイドデータにしたくなることがある。

ワイドデータにする

  • questionaire列を作って、その中の値をansにするには以下
wide <- df %>% 
  tidyr::pivot_wider(names_from = questionaire,
                     values_from = ans)

> wide
# A tibble: 2 × 3
     ID    Q1    Q2
  <int> <dbl> <dbl>
1     1     1     3
2     2     2     3
  • 列名にしたい列をnames_fromで指定し、どの値を入れるかをvalues_fromで指定するだけ。

ロングデータにする

long1 <- wide %>% 
  pivot_longer(cols=c(Q1,Q2))

> long1
# A tibble: 4 × 3
     ID name  value
  <int> <chr> <dbl>
1     1 Q1        1
2     1 Q2        3
3     2 Q1        2
4     2 Q2        3
  • ロングデータにする際はロングデータにしたい列を指定するだけで良い。
  • ただし、列名がデフォルトでnamevalueになっている。
    • names_tovalues_toで指定しれやれば良い
long2 <- wide %>% 
  pivot_longer(cols=c(Q1,Q2),names_to = "question",
               values_to = "ans")

> long2
# A tibble: 4 × 3
     ID question   ans
  <int> <chr>    <dbl>
1     1 Q1           1
2     1 Q2           3
3     2 Q1           2
4     2 Q2           3

終わり。

1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?