[R]spread:データを横長にする

Post date: Aug 24, 2017 1:20:09 AM

Rのデータ操作法は進化が早くて未だに慣れない。かつてはreshapeを使っていたデータのlong ←→wide変換を今は、spreadとかgatherを使うらしい。

Rヘルプが直感的でわかりやすいので、spreadのヘルプに解説入れてみる。

とりあえずデータを作る。

library(tidyr)

stocks <- data.frame( time = as.Date('2009-01-01') + 0:9, X = rnorm(10, 0, 1), Y = rnorm(10, 0, 2), Z = rnorm(10, 0, 4) ) stocksm <- stocks %>% gather(stock, price, -time) head(stocksm)

いわゆるlong型のテーブル。stockはx,y,zの三種類。これを時系列のwide型にする。データを入れるときはパイプを使う。一つ目の引数に株の種類、二つ目に見たいデータ(price)を入れる。

In [5]:

stocksm %>% spread(stock, price)

やっぱり時系列を横にしたい。

In [6]:

stocksm %>% spread(time, price)

In [ ]: