# Examples for tidyr
library(tidyverse)
## -- Attaching packages -------------------------------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2     v purrr   0.3.4
## v tibble  3.0.3     v dplyr   1.0.2
## v tidyr   1.1.1     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.5.0
## -- Conflicts ----------------------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
set.seed(1)

stocks <- data.frame(time=as.Date('2009-01-01')+0:9,
 # x=rnorm(n, mean, SD)
 X=rnorm(10,20,1),
 Y=rnorm(10,20,2),
 Z=rnorm(10,20,4)
)

stocks
##          time        X        Y        Z
## 1  2009-01-01 19.37355 23.02356 23.67591
## 2  2009-01-02 20.18364 20.77969 23.12855
## 3  2009-01-03 19.16437 18.75752 20.29826
## 4  2009-01-04 21.59528 15.57060 12.04259
## 5  2009-01-05 20.32951 22.24986 22.47930
## 6  2009-01-06 19.17953 19.91013 19.77549
## 7  2009-01-07 20.48743 19.96762 19.37682
## 8  2009-01-08 20.73832 21.88767 14.11699
## 9  2009-01-09 20.57578 21.64244 18.08740
## 10 2009-01-10 19.69461 21.18780 21.67177
#gather

stocksG<- stocks%>%
  gather(key=stock, value = price, -time)

head(stocksG)
##         time stock    price
## 1 2009-01-01     X 19.37355
## 2 2009-01-02     X 20.18364
## 3 2009-01-03     X 19.16437
## 4 2009-01-04     X 21.59528
## 5 2009-01-05     X 20.32951
## 6 2009-01-06     X 19.17953
View(stocksG)

ggplot(stocksG, aes(time, price, color=stock))+
  geom_line()

stocksS<-stocksG%>%
  spread(key=stock, value=price)
stocks
##          time        X        Y        Z
## 1  2009-01-01 19.37355 23.02356 23.67591
## 2  2009-01-02 20.18364 20.77969 23.12855
## 3  2009-01-03 19.16437 18.75752 20.29826
## 4  2009-01-04 21.59528 15.57060 12.04259
## 5  2009-01-05 20.32951 22.24986 22.47930
## 6  2009-01-06 19.17953 19.91013 19.77549
## 7  2009-01-07 20.48743 19.96762 19.37682
## 8  2009-01-08 20.73832 21.88767 14.11699
## 9  2009-01-09 20.57578 21.64244 18.08740
## 10 2009-01-10 19.69461 21.18780 21.67177
date<- as.Date('2016-01-01')+0:14
#randomly pull out 15 numbers
hour<-sample(1:24, 15)
min<-sample(1:60, 15)
second<-sample(1:60, 15)
event<- sample(letters, 15)

data<-data.frame(date,hour,min,second,event)
data
##          date hour min second event
## 1  2016-01-01   19  44     39     g
## 2  2016-01-02   10   6     29     w
## 3  2016-01-03    6  40     13     s
## 4  2016-01-04   14  39     22     v
## 5  2016-01-05    2  11     59     r
## 6  2016-01-06   13  17     28     p
## 7  2016-01-07   18  36     44     k
## 8  2016-01-08   21  13     48     j
## 9  2016-01-09   22  58     33     z
## 10 2016-01-10    1  25     45     b
## 11 2016-01-11    3  48     21     x
## 12 2016-01-12   17  51     31     a
## 13 2016-01-13    8  23     38     t
## 14 2016-01-14   16  46     17     n
## 15 2016-01-15    7  20      9     u
dataUnite<-data%>%
  unite(datehour, date, hour, sep=' ')%>%
  unite(datetime, datehour, min, second, sep = ':')

dataUnite
##               datetime event
## 1  2016-01-01 19:44:39     g
## 2   2016-01-02 10:6:29     w
## 3   2016-01-03 6:40:13     s
## 4  2016-01-04 14:39:22     v
## 5   2016-01-05 2:11:59     r
## 6  2016-01-06 13:17:28     p
## 7  2016-01-07 18:36:44     k
## 8  2016-01-08 21:13:48     j
## 9  2016-01-09 22:58:33     z
## 10  2016-01-10 1:25:45     b
## 11  2016-01-11 3:48:21     x
## 12 2016-01-12 17:51:31     a
## 13  2016-01-13 8:23:38     t
## 14 2016-01-14 16:46:17     n
## 15   2016-01-15 7:20:9     u
dataSep<-dataUnite%>%
  separate(datetime, c('date','time'), sep = ' ')%>%
  separate(time,c('hour','min', 'seconds'), sep=':')