R语言高效处理复杂数据函数汇总@灵魂体验官

 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)

关注我,你就是我的电子朋友咯!icon-default.png?t=N7T8https://blog.csdn.net/LEEBELOVED

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LEEBELOVED

一分钱都是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值