美文网首页
数据的读写处理

数据的读写处理

作者: 蓝色滑行 | 来源:发表于2020-01-28 16:53 被阅读0次

title: "读写竞赛"
author: "ky"
date: "2020年1月28日"
output: word_document


如果我们在R中已经得到了一个非常大的数据文件,应该用什么工具才能迅速写出这个数据表呢?
如果我们在文件夹中有一个很大的数据表文件,怎样才能迅速读取并载入工作区间呢?
下面我们构建一个较大的数据框,实践测试一下。

library(pacman)
p_load(fst,feather,data.table,tidyverse)
nr_of_rows <- 1e7

  df <- data.frame(
  logical = sample(c(TRUE,FALSE,NA),prob = c(0.85,0.1,0.05),nr_of_rows,replace = TRUE),
  Integer = sample(1L:100L,nr_of_rows,replace = TRUE),
  Real = sample(sample(1:10000,20)/100,nr_of_rows,replace =  TRUE),
  Factor = as.factor(sample(labels(UScitiesD),nr_of_rows,replace = TRUE))

)

查看一下数据文件大小

object.size(df) %>%
  print(unit = 'auto')

csv组别

write.csv base包中基础函数
write_csv tidyverse包中的函数
fwrite data.table包中的函数

setwd('e:/r-lhtz')
p_load(microbenchmark)
microbenchmark(write.csv(df,'df_base.csv'),
               write_csv(df,'df_readr.csv'),
               fwrite(df,'df_dt.csv'),
               times = 1,unit = 's')

读入测试(统一读入df_dt数据)

microbenchmark(read.csv('df_dt.csv') -> df_base,
               read_csv('df_dt.csv') -> df_readr,
               fread('df_dt.csv') -> df_dt,
               times = 1,unit = 's')
df_dt %>% as_tibble() -> df_readr1 #使用data.table读入转化为tidyverse系统处理
df_readr1
gdata::keep(df,sure =T)  #仅仅保留df变量
file.remove(c('df_dt.csv','df_base.csv','df_readr.csv'))  #删除写入文件

2.bin组别

二进制可以获得更快的读写速度,在base包中,存储一个数据表可以使用saveRDS函数,文件后缀为“.rds”,重新
读取可以使用readRDS函数。在tidyverse生态系统中,readr包提供了read_rds函数和write_rds函数。data.table
则主要有feather和fst包。

microbenchmark(write_rds(df,'df.rds'),
               write_feather(df,'df.feather'),
               write_fst(df,'df.fst'),
               times = 10,unit = 's')
microbenchmark(read_rds('df.rds') -> df_rds,
               read_feather('df.feather') -> df_feather,
               read_fst('df.fst') -> df_fst,
               times = 10, unit = 's')
setequal(df,df_rds)
setequal(df,df_feather)
setequal(df,df_fst)
file.remove(c('df.rds','df.feather','df.fst'))

数据存取转换的瑞士军刀(rio)

rio包能够对各种格式进行输入和输出,首次使用需要安装rio包

library(pacman)
p_load(rio)
export(iris,'iris.xlsx')
export(list(mtcars =mtcars,iris=iris),file = 'mtcars_iris.xlsx') #两个数据集生成在一个文件中的两个sheet
import_list('mtcars_iris.xlsx') -> mtcars_iris
mtcars_iris[[1]]
mtcars_iris[[2]]

import_list('mtcars_iris.xlsx',which = 2) -> iris2  #指定取出第2个工作簿文件
iris2

rio包中的convert函数支持格式转换

convert('iris.xlsx','iris.fst')
unlink(c('iris.xlsx','mtcars_iris.xlsx','iris.fst','iris.csv','iris1.csv')) #unlink等价于file.remove

相关文章

  • 数据的读写处理

    title: "读写竞赛"author: "ky"date: "2020年1月28日"output: word_d...

  • mysql读写分离

    mysql读写分离 1、读写分离的介绍 MySQL读写分离基本原理是让master数据库处理写操作,slave数据...

  • 多线程读写内存导致crash的思考

    cpu无法处理同时读写吗? 不是,cpu对同时读写无所谓。cpu读写内存是通过数据总线操作的,我们只有一个数据总线...

  • RDBMS和MapReduce的区别

    RDBMSMapReduce数据大小GBPB数据存取交互式和批处理批处理数据更新多次读写多次读取,一次写入事务AC...

  • mysql读写分离

    1.读写分离的思路 1.1 原理 顾名思义,读写分离基本的原理是让主数据库处理事务性增、改、删操作,而从数据库处理...

  • Amoeba 实现 MySQL 读写分离

    [TOC] 一、读写分离原理 读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务...

  • MVC MVVM MVP MVCS

    MVC: M定义数据格式,进行数据的读写V展示数据,处理非业务逻辑,C层处理主要业务,控制 V-M 层的数据流,处...

  • 西瓜书--线性回归 logistic 01

    import pandas as pd 负责数据的读写和初步处理 from sklearn.linear_mode...

  • 通宵整理的140种Python标准库、第三方库和外部工具都有!

    这些库可用于文件读写、网络抓取和解析、数据连接、数清洗转换、数据计算和统计分析、图像和视频处理、音频处理、数据挖掘...

  • 140种Python标准库、第三方库和外部工具

    这些库可用于文件读写、网络抓取和解析、数据连接、数清洗转换、数据计算和统计分析、图像和视频处理、音频处理、数据挖掘...

网友评论

      本文标题:数据的读写处理

      本文链接:https://www.haomeiwen.com/subject/yicmthtx.html