# 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=':')