对于习惯使用sql的同学,etl切换成用R,如何能够很快的对应上手呢?
直接上代码教程:
1. 获取数据源
R设置目录:
setwd("D:\\working\\jane_personal_coding")
getwd()
读取csv文档:
data=read.csv("user_ana2R.csv",header=T)
2. 传统的数据etl方法:
数据筛选:subset
order_amt<-subset(data,type=='order_amt')
排序:
attach(order_amt)
a<-order_amt[order(dim),]
detach(order_amt)
3. 用dplyr方法:
3.1 首先加载包,然后将数据源转换成tbl的格式,至于为什么,我也不是很清楚。。。
library(dplyr)
order_tbl=tbl_df(data)
3.2 下面要筛选数据了:##filter
filter(order_tbl,type=="membel_level")
filter(summ,count>5)
3.3 选择字段:##select
select(order_tbl,type,dim,user_num)
3.4 若要看type里面有多少不同的品类,以下两种方法:
distinct(select (order_tbl,type))
unique(order_tbl$type)
3.5 排序 ##arrange
arrange(order_tbl,user_num)
3.6 改变or新增列 ##mutate
mutate(order_tbl,user_num-shouxin_user_num)
3.7 统计 ##summarise
3.7.1 计算平均数
summarise(order_tbl,user_num=mean(user_num,na.rm=TRUE))
3.7.2 计数
summarise(order_tbl,count=n(),count_dis=n_distinct(x))
3.7.3 不知道这个是什么##sample_n() sample_frac()
sample_n(order_tbl,16)
sample_frac(order_tbl,0.5)
3.8 分组 ##group_by
grouped<-group_by(order_tbl,type)
summ<-summarise(grouped,count= n())
4. 编辑数据源
用edit ##import edit data
mydata<-data.frame(age=numeric(0),gender=character(0),weight=numeric(0))
mydata<-edit(mydata)
5. 设置数据为因子格式 ##set into factor
将已有的字段设置成因子:
gender<-factor(gender,levels = c("A","B","C","D","E"))
新建字段并且直接设置因子:
sex=factor(c(1,0,1,1,1,0),levels=c(0,1),labels=c("male","female"))
查看因子的层次:
level(sex)
6. 很牛逼的揉数据 ##reshape
这个是我觉得的一个很管用的利器:就两步,1先揉,主键设置为id后面的(可以是组合键),2 再成型,要看哪个度量对于哪个纬度的分布
library(reshape)
md<-melt(data,id=(c("type","dim")))
cast(md,type~variable)
7. 常用的函数
7.1 粘合函数 ##paste
paste("chapter",1:20,"now")
7.2 聚合函数 ##aggregate
vars<-c("mpg","hp","wt")
aggregate(mtcars[vars],by=list(am=mtcars$am),mean)
7.3 自定义函数
func<-funcation(x)(c(mean(x),sd=sd(x)))
by(mtcars[vars],mtcars$am,func)
7.4 一秒出分布图
library(ggplot2)
qplot(user_num,data=a,binwidth=1000,xlim=c(0,10000000),geom="histogram",main="distribution of pay_dis",col="pink")
7.5 查看表格的基本情况
table(mydata$age)
mytable<-xtabs(~age,gender,data=mydata)
margin.table(mytable,1)