data.table包使用应该注意的一些细节
fread中nThread 参数的使用
注意默认nThread=getDTthreads(),即使用所有能用的核心,但并不是核心用的越多越好,本人亲自测试的情况下,其实单核具有较强的性能,只有在数据大于3Gb的情况下,开启11核(我的机器全部核心30多核)效率才比一个核心更高,而默认使用全部的核心效率一直非常低。因此对于不是非常巨大的文件,建议设置为1,不要使用全部核心
fread中sep是自动检测的
所以在循环读入文件的过程中,就算不同文件的分隔符不同,也可以循环一次性方便的读入; 还有就算后续改变了文件的分隔符,文件也可以读入,建议不加分隔符
fread可以自动检测注释,并且跳过注释行
默认skip=0,会跳过不规则的行,因此有注释行时,可以走默认的skip参数
转换成矩阵时可以保留某一列为rowname
as.matrix作用于data.table时会调用as.matrix.data.table,有一个rownames参数可以指定保留为行名的列
矩阵转换成data.table时可以保留列名
在as.data.table函数中同样有一个rownames参数,设置为T可以将行名保留下来作为data.table的一列
不建议set和for循环一起使用
虽然set可以在内存上直接改变数值,但在R中用for循环比批量列运算慢的多,因此首选:=或者apply等
在处理浮点数时会有一些准确性的问题
比如用seq函数numeric类型的数值时,会存在不准确的问题,比如seq(0,1,by=0.2)中的0.6就不等于0.6, 虽然很费解,但这是因为计算机在存储浮点数时出现的一些问题。现在只发现seq函数会出现这种情况,manual中提供了一个函数解决这个问题,setNumericRounding(2) ,去除最后两个字节,这样运行的更快,也不会出现0.6不等于0.6的问题
支持数据框取交集和并集
类似于集合运算,data.table中fintersect, fsetdiff, funion,fsetequal函数能对不同数据框的行求交集,差集,并集等
可以直接对列按分隔符进行分割
应用tstrsplit函数可以将一列按照分隔符分成多列,函数返回的是一个列表,举例:DT[, c("c1", "c2") := tstrsplit(x, "/", fixed=TRUE)][],将x列按照/分隔,分割成c1,c2两列
支持类似于SQLs的分组运算
带有rollup, cube, groupingsets函数
参考资料
data.table 1.11.2 manual:https://cran.r-project.org/web/packages/data.table/data.table.pdf
data.table包使用应该注意的一些细节的更多相关文章
- R语言数据分析利器data.table包 —— 数据框结构处理精讲
R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理 ...
- data.table包简介
data.table包主要特色是:设置keys.快速分组和滚得时序的快速合并.data.table主要通过二元检索法大大提高数据操作的效率,同时它也兼容适用于data.frame的向量检索法. req ...
- R︱高效数据操作——data.table包(实战心得、dplyr对比、key灵活用法、数据合并)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 由于业务中接触的数据量很大,于是不得不转战开始 ...
- 使用 data.table 包操作数据
在第一节中,我们回顾了许多用于操作数据框的内置函数.然后,了解了 sqldf 扩展包,它使得简单的数据查询和统计变得更简便.然而,两种方法都有各自的局限性.使用内置函数可能既繁琐又缓慢,而相对于各式各 ...
- R语言data.table包fread读取数据
R语言处理大规模数据速度不算快,通过安装其他包比如data.table可以提升读取处理速度. 案例,分别用read.csv和data.table包的fread函数读取一个1.67万行.230列的表格数 ...
- R语言数据分析利器data.table包—数据框结构处理精讲
R语言数据分析利器data.table包-数据框结构处理精讲 R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代 ...
- data.table包
data.table 1.生成一个data.table对象 生成一个data.table对象,记为DT. library(data.table) :],V3=round(rnorm(),),V4=:) ...
- R读取大数据data.table包之fread
>library(data.table)>data=fread("10000000.txt")>Read 9999999 rows and 71 (of 71) ...
- R语言学习笔记(十七):data.table包中melt与dcast函数的使用
melt函数可以将宽数据转化为长数据 dcast函数可以将长数据转化为宽数据 > DT = fread("melt_default.csv") > DT family_ ...
随机推荐
- CocoaLumberjack——带颜色的Log
CocoaLumberjack可以带颜色Log,具体的好处嘛,谁用谁知道,:] 具体步骤如下: 1. 安装XcodeColors插件 下载地址:https://github.com/robbiehan ...
- mysql windows 安装 错误
1 免压缩版安装会经常提示需要c++库,还是要用安装版. 2 安装板默认在c盘,修改目录要注意目录权限. 3 要把datadir的data目录全部考到新目录下.
- m3u8下载转码一次完成
最近看到有部分网站开始加入视频解析服务,虽然这种服务会损害土豆优酷等视频托管商的权益,但是,烦人的广告也让我们开始寻找有没有什么比较靠谱的解决方法~实际上很多网站都在使用m3u8文件格式,里面都是视频 ...
- vue的过滤器filter
前记: 排版记录,未免太耽误时间,我就简单的来,下面是一个vue 过滤器的写法,demo 演示,限制一个字符串的长度. vue filter 的官网介绍 https://cn.vuejs.org/v2 ...
- zabbix3.2自动发现批量监控redis端口状态
使用nmap提示被防火墙阻挡,实际没有启用防火墙 [root@eus_chinasoft_haproxy:/usr/local/aegis]# nmap 172.20.103.202 -p 7000 ...
- maven父子模块deploy 问题
1.问题描述:直接 deploy 子某块,但第三者确不能引用 jar(jar down不下来,但pom不报错) 原因:父子模块项目必须保证父模块pom deploy后,再 deploy 子模块才能被引 ...
- Nodejs安装(npm、cnpm、webpack)
1.nodejs官网对应下载(我的电脑对应的是64位的).https://nodejs.org/en/download/ 2.下载之后开始安装: 点击next按钮 点击next 点击next,进入下边 ...
- ios自带的返回按键,点击不刷新页面
1.因为是微信端页面,需要获取用户基本信息和设置微信分享朋友圈等功能,ios自带的返回键没有这个功能,导致config配置不成功,该隐藏的按钮没有隐藏. 解决方法,在子页面添加一下js代码即可.链接的 ...
- ollydbg入门记录
1.软件窗口说明 OllyDBG 中各个窗口的名称如下图.简单解释一下各个窗口的功能, 反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址.HEX 数据.反汇编.注释可以通过在窗口中右击出现的菜单 ...
- MYSQL 单表一对多查询,将多条记录合并成一条记录
一.描述: 在MySQL 5.6环境下,应工作需求:将一个表中多条某个相同字段的其他字段合并(不太会表达,有点绕,直接上图) 想要达到的效果: 实现SQL语句: SELECT a.books, GRO ...