1、批量变量名修改
pay_data<-upData(pay_data,rename=c(X1="top_up_users",
X2="top_up_mon",
X3="top_up_times",
X4="tp_date"))
2、分组计算同一变量的多个统计值
#数据分类汇总
基础方式:
top_up_data_para1%>%group_by(cur_month)%>%
summarise(top_up_month_female=sum(top_up_female),
max_female=max(top_up_female),
min_female=min(top_up_female),
median_female=median(top_up_female),
top_up_month_male=sum(top_up_male),
max_male=max(top_up_male),
min_male=min(top_up_male),
median_male=median(top_up_male))
#优化以上计算方式:
优化方式1:
top_up_data_para1%>%group_by(cur_month)%>%
summarise(across(c("top_up_users","top_up_times"),
list(max,min,median,sum),.names="{.col}_{.fn}"))
优化方式2:
top_up_data_para1%>%group_by(cur_month)%>%
summarise(across(c("top_up_users","top_up_times"),
list(max=max,min=min,median=median,sum=sum)))
3、批量读取EXCEL中sheet
#批量读取EXCEL中sheet
sheet.index=1:4#sheet表数量
data.list=list()#整合为列表
for (i in sheet.index){
data.list[[i]]=read_xlsx("test_data.xlsx")#相对路径下的文件名
}
4、数据分类标签
#观察数据值的分布情况
describe(game_data11$u)#或者summary函数
#给数据加标签进行分类,注意对值的判断前检查变量的数据类型
game_data11<-game_data11%>%mutate(rang_times=case_when(u_times<=10~"times<=10",
u_times>10&u_times<=20~"10<times<=20",
u_times>20&u_times<=30~"20<times<=30",
u_times>30&u_times<=40~"30<times<=40",
u_times>40&u_times<=50~"40<times<=50",
u_times>50~"times>50"))
5、自定义函数:批量计算多个变量多个统计值
#批量计算多个变量多个统计值函数
data_base_sta<-function(x){
s_x<-sum(x)
m_x<-mean(x)
max_x<-max(x)
min_x<-min(x)
median_x<-median(x)
var_x<-var(x)
sd_x<-sd(x)
merge_var=list(s_x,m_x,max_x,min_x,median_x,var_x,sd_x)
#return(c(sum=s_x,mean=m_x,max=max_x,min=min_x,median=median_x,var=var_x,sd=sd_x))
#return(merge_var)
}
#根据数据类型作数据计算
radio_base_sta<-radio_data_ss%>%summarise_if(is.numeric,data_base_sta)
#看个笨方法计算所有变量所需统计值,非常不建议写这样臃肿
data_detail_sta3<-data_detail_summary_order%>%summarise_all(open_times=n(),sum_flow=sum(room_flow),
min_flow=min(room_flow),max_flow=max(room_flow),median_flow=median(room_flow),
mean_flow=mean(room_flow), sum_user=sum(active_user),
min_user=min(active_user),
max_user=max(active_user),
median_user=median(active_user),
mean_user=mean(active_user),
sum_commu_times=sum(commu_times),
min_commu_times=min(commu_times),
max_commu_times=max(commu_times),
median_commu_times=median(commu_times),
median_commu_user=median(commu_user),
mean_commu_user=mean(commu_user))
#变量数据拆分
radio_cha_split<-str_split_fixed(radio_data_ss$aver_left_time,"分",2)
6、生成一段日期
#生成一段日期
date_ange=seq.Date(from=as.Date("2020/11/5"),to=as.Date("2020/12/5"),by="day")
7、WORD文档数据读取
#WORD数据读取
doc_king<-readtext("doc_king.docx",encoding="utf-8")
fwrite(doc_king,file="doc_king.txt")
8、数据缺失值简要处理
#缺失值处理
b_data_update1<-b_data_update%>%mutate_at(.vars=c('au_b_male','au_b_female','b_price'),
funs(ifelse(.==0, deparse(substitute()), .)))
data<-mice(b_data_update,m=7,method='pmm',maxit=200,seed=1)
9、运行内存调整
#Rstudio运行内存修改,便于读取大数据,上GB级的数据文件
memory.limit(102400)
fread()函数读取
10、数据转为日期及其计算
#将读取变量转换为相应格式日期
data_p$time<-as.Date(data_p$time,tryFormats = c("%Y-%m-%d"))
#日期差计算
data_p_tag1<-data_p_left1%>%mutate(day_dif=difftime(data_p_left1$time,
data_p_left1$reg_time,units="days"))
11、数据多条件过滤
#多条件过滤
data_p_final<-data_p_su%>%filter(scene!='lot'&scene!='lucky')%>%
group_by(r_type,time)%>%
summarise(p_m=sum(p),pay_user=sum(p_x))
12、数据循环计算报错处理
#trycatch与if else break结合使用
for (i in 1:21) {
data_z<-x_data%>%filter(time==date_eange[i])
for (j in 0:6) {
#尝试筛选更多天的x数据,如果没有,就报错,跳出循环
pay_t=date_eange[i+j]
res=tryCatch(
data_x_later<-data_x%>%filter(x_time==date_eange[i+j]),
error=function(err) {
print(str_c("没有更多","x数据"))})
if(max(data_x$x_time)>=p_t){
#计算x数据
print(date_eange[i+j])
}else{
break
}
}
data_x
}
13、json文件数据读取函数
#json数据读取
data_ann<-jsonlite::stream_in(file("log_anniver.json"),pagesize = 100)
#2021/11/08更新
14、横向变量值增加排名标签
#apply函数对行数据应用排序函数
apply(data_test[,c("var1","var2","var3","var4")],1,row_number)