- ---
- title: "tidyr"
- author: "cxy"
- date: "2017年8月4日"
- output: html_document
- ---
- ```{r setup, include=FALSE}
- knitr::opts_chunk$set(echo = TRUE)
- ```
- # 准备数据
- ```{r warning=FALSE}
- library(tidyr)
- library(dplyr)
- set.seed(10)
- activities <- data.frame(
- id = sprintf("x1.%02d", 1:10),
- trt = sample(c('cnt', 'tr'), 10, T),
- work.T1 = runif(10),
- play.T1 = runif(10),
- talk.T1 = runif(10),
- work.T2 = runif(10),
- play.T2 = runif(10),
- talk.T2 = runif(10))
- activities
- ```
- # 需要生成的终极效果
- ```{r}
- activities %>%
- gather(key, value, -id, -trt) %>%
- separate(key, into = c("location", "time")) %>%
- arrange(id, trt, time) %>%
- spread(location, value)
- ```
- # 逐步演示
- ## 把除id和trt之外的字段变成记录或者叫观测值
- ```{r}
- a=gather(activities,key, value, -(id:trt))
- a
- ```
- ## 把key拆分成两列
- ```{r}
- b=separate(a,key,c("location", "time"))
- b
- ```
- ## 按照id、trt、time三个关键字进行排序
- ```{r}
- c=arrange(b,id,trt,time)
- c
- ```
- ## 把location的字段值变成字段,值为value
- ```{r}
- d=spread(c,location,value)
- d
- ```
- # 倒回去,d生成定制化的结果activities
- ## 把play、talk、work字段变成字段值,建立字段location、value
- ```{r}
- e=gather(d,location,value,play:work)
- e
- ```
- ## 把location和time字段合并,建立字段key
- ```{r}
- f=unite(e,key,location,time,sep=".")
- f
- ```
- ## 把key的字段值变成字段
- ```{r}
- g=spread(f,key,value)
- g
- ```
- # d生成activities一步优雅实现
- ```{r}
- d %>%
- gather(location,value,play:work) %>%
- unite(key,location,time,sep=".") %>%
- spread(key,value)
- ```
- ---
- title: "tidyr"
- author: "cxy"
- date: "2017年8月4日"
- output: html_document
- ---
- ```{r setup, include=FALSE}
- knitr::opts_chunk$set(echo = TRUE)
- ```
- # 准备数据
- ```{r warning=FALSE}
- library(tidyr)
- library(dplyr)
- set.seed(10)
- activities <- data.frame(
- id = sprintf("x1.%02d", 1:10),
- trt = sample(c('cnt', 'tr'), 10, T),
- work.T1 = runif(10),
- play.T1 = runif(10),
- talk.T1 = runif(10),
- work.T2 = runif(10),
- play.T2 = runif(10),
- talk.T2 = runif(10))
- activities
- ```
- # 需要生成的终极效果
- ```{r}
- activities %>%
- gather(key, value, -id, -trt) %>%
- separate(key, into = c("location", "time")) %>%
- arrange(id, trt, time) %>%
- spread(location, value)
- ```
- # 逐步演示
- ## 把除id和trt之外的字段变成记录或者叫观测值
- ```{r}
- a=gather(activities,key, value, -(id:trt))
- a
- ```
- ## 把key拆分成两列
- ```{r}
- b=separate(a,key,c("location", "time"))
- b
- ```
- ## 按照id、trt、time三个关键字进行排序
- ```{r}
- c=arrange(b,id,trt,time)
- c
- ```
- ## 把location的字段值变成字段,值为value
- ```{r}
- d=spread(c,location,value)
- d
- ```
- # 倒回去,d生成定制化的结果activities
- ## 把play、talk、work字段变成字段值,建立字段location、value
- ```{r}
- e=gather(d,location,value,play:work)
- e
- ```
- ## 把location和time字段合并,建立字段key
- ```{r}
- f=unite(e,key,location,time,sep=".")
- f
- ```
- ## 把key的字段值变成字段
- ```{r}
- g=spread(f,key,value)
- g
- ```
- # d生成activities一步优雅实现
- ```{r}
- d %>%
- gather(location,value,play:work) %>%
- unite(key,location,time,sep=".") %>%
- spread(key,value)
- ```
复制代码
|