展开

关键词

R︱高效数据操作——data.table包(实战心得、dplyr对比、key灵活用法、数据合并)

由于业务接触数据很大,于是转战开始寻求数据操作效率。于是,data.table这个包就可以很好满足对大数据数据操作需求。 R语言︱数据集组、筛选(plit – apply – combine模式、dplyr、data.table) 时,data.table与data.frame数据呈现方面,还有有所。 %>%功能是用于实现一个函数输出传递下一个函数第一个参数。注意这里,传递下一个函数第一个参数,然后就用写第一个参数了。在dplyr组求和过程,还是挺有用。 0意味着对于没有匹会返回。 SD只能在j使用。 .SDcols常于.SD用在一起,他可以指定.SD所包含列,也就是对.SD取子集。

1.6K31

R语言基因组数据析可能会用到data.table函数整理

因此,在对大数据处理上,使用data.table无疑具有极高效率。这里主要介绍在基因组数据可能会用到函数。 需要取掉列名或者列号,要其它; colClasses 类字符矢,用于罕见覆盖而是常规使用,只会使一列变为更高类型,能降低类型; integer64 读如64整型数; ,默认_; subset 指定要铸造子集;利用; margins 函数尚能应用(作者还没写好),预计设定编辑汇总方; fill 填充缺失值; drop 设成FALSE by ]语法做 但是如果我要上述DTv3作为一个影响因素,作为tag,先按v1、v2汇总,再对应v4值为v3=1和v3=2两类,查看v1、v2取值相v3对应v4情况,这个时候用dcast 当时TRUE时候,工作台交互 chmatch 返回各字符串在第二个对象首匹,是match和%in%加速版本。

5610
  • 广告
    关闭

    腾讯云精选爆品盛惠抢购

    腾讯云精选爆款云服务器限时体验20元起,云数据库19.9元/年起,还有更多热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    「R」数据操作(三):高效data.table

    例如,使用setkey()id设为product_info一个键: setkey(product_info, id) ,函数无任何返回,但我们已经为原始数据设了键,而且原来数据看起来也没变化 对数据进行组汇总 by是data.table另一个重要参数(即方括号内第3个参数),它可以数据按照by值进行组,并对组计算第2个参数。 ,by所对应组合值是唯一,虽然实现了目标,但结果没有设键: key(type_class_test0) #> NULL 这种情况下,我们可以使用keyby来确保结果data.table自动 keyby对应为键。 可以自动id值与质类连接起来。

    24320

    R语言数据析利器data.table包 —— 数据框结构处理精讲

    data.frame默认非数字转化为因子;而data.table非数字转化为字符 data.table数据框也可使用dplyr包管道,这里作阐述。 一个R对象转化为data.table,R可以时矢,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,行名存在"rn"行,keep.rownames 列名,old是旧列名或者数字,new是新列名 setcolorder(x,neworder) 重新安排列顺序,neworder字符矢或者行数 set(DT,rownum,colnum,value ; drop,需要取掉列名或者列号,要其它; colClasses,类字符矢,用于罕见覆盖而是常规使用,只会使一列变为更高类型,能降低类型; integer64,读如64整型数;  填充首尾行,TRUE填充,FALSE填充,与roll一使用 which TRUE返回匹行号,NA返回行号,默认FALSE返回匹行 .SDcols 取特定列,然后.

    11720

    R语言学习笔记之——数据处理神器data.table

    数据处理在数据析流程相信大家都有目共睹,也是每一个数据从业者面临最为繁重工作任务。 rm(list=ls()) gc() 2、索引切片聚合 data.table提供了行索引、列切片、组功能于一体数据处理模型。 (carrier,tailnum)] #但心里要清楚列索引接受条件是含有列表列表,而且这里列表作为变出,而非data.frame时代字符串。 行列时索引毫无压力。 列索引仅支持列名索引,可以直接支持内建函数操作。 mydata[,.(flight/1000,carrier,tailnum)] 支持直接在列索引新建列,赋值符号为:=。 当整列和聚合单值时输出时,可以支持自动补齐操作。 当聚合函数与data.table组参数一起使用时,data.table真正威力才逐渐显露。 mydata[,.

    80080

    经验总结 | 最有效R学习路径(一)

    ——Hadley Wickham ” 小伙伴们肯定有这样经历:在写论文过程,绝大部时间都用来清理数据,例如剔除异常值、表与表之间与连接、数据类汇总等,而最后用来跑回归时间可能就只有十几秒左右 因此,大猫第一个建议是: 一:自己绝大多数时间花在学习数据处理方法上! 那么R有哪些适合数据处理工具呢? 首先大猫告诉大家:要使用内data.frame,要使用内data.frame,要使用内data.frame!重要事情说三遍! /wiki/Getting-started data.table进阶 像学习所有语言一样,练习永远是第一,但是很多时候我们找到合适习题,这个时候大猫大家隆重推荐stackoverflow上R 正因为如此,在下一期课堂,大猫大家介绍数据可视化两个包:ggvis和ggplot2。我是大猫,咱们下期见!

    31120

    R语言高级数据结构data.table

    对于data.frame大家应该很熟悉,它可以存储数据类型数据。今天大家介绍一个升级版data.frame,其仅可以存储数据类型还可以进行多列并行运算。 首先看下此格式数据生成: fread 自带读入数据函数,可以直接txt,csv读入并生成相应data.table格式数据。 as.data.table R对象转化为data.table格式数据,其对象可以为列表,,data.frame。 setDT(x) 其直接R对象转化为data.table数据类型,从而改变数据地址。 以上就是data.table运算方式了,当然他还有一些更深运算以及设,如果有兴趣可以去更深入看看,目前我们也就用到这些。

    89430

    R语言︱数据集组、筛选(plit – apply – combine模式、dplyr、data.table)

    R语言︱数据集组 大型数据集通常是高度结构化,结构使得我们可以按方式组,有时候我们需要关注单个组数据片断,有时需要聚合组内信息,并相互比较。 在base包里和split功能接近函数有cut(对属性数据划),strsplit(对字符串划)以及subset(对,矩阵或数据框按定条件取子集)等。 5、which定函数 功能:返回服从条件观测所在(行数),有一定排序功能在其。 在使用data.table时候,需要预先布一下环境: data<-data.table(data) 如果环境,很多内容用了。 data.table比较简洁一步搞定,dplyr花了两步,过也dplyr也可以通过%>%来实现一步搞定。%>%功能是用于实现一个函数输出传递下一个函数第一个参数。

    11.5K32

    R练习50题 - 第一期

    例如股票600128,如果它一共有100天观测,那么我们会出现100个重复结果。为了去重,我们需要借助于data.tableunique函数。 我们希望最终输出是一个字符串: ? boolean vector,长度与原。 str_detect(symbol, "8")含义为:对于symbol,判断其是否含有字符8,如果有,则为True,否则Faulse。 unique:找出symbol重复值。 它是data.table函数之一,和unique几乎执行相操作,唯一是,unique返回重复item(是一个),而uniqueN返回重复(是一个数字)。 如果你愿意,data.table允许你把所有代码都写在一行,就像这样: 下期预告 在下一期,我们会继续带来剩余题目解答~ 大猫R语言课堂 我是大猫,一个高读文科但却在代码、数学路上狂奔

    78940

    数据流编程教程:R语言与DataFrame

    在参数方面是和原生read.xxx()函数族是看齐。 (2)关联表查询 inner_join(x, y): 匹 x + y left_join(x, y): 所有 x + 匹 y semi_join(x, y): 所有 x 在 y anti_join (x, y): 所有 x 在 y (3)集合操作 intersect(x, y): x 和 y 交集(按行) union(x, y): x 和 y 并集(按行) setdiff(x, 它设计理念类似于PhotoShop,具体参数包含设计对象、艺术渲染、统计、尺寸调整、坐标系统、片显示、调整、动画效果等等。 data.table还参考了NoSQL流行Key-Value形式,引入了setkey()函数,为数据框设关键字索引。

    959120

    关于data.tablei, j, by都为数字理解

    写 在前面 本期还是由村长来为大家供稿,这期讲一个村长遇到关于data.table比较有趣问题,希望大家支持!! 问 题:i, j, by时输入数字会怎样? 首先,我们单独看i只有一个1情况下是什么运行结果,为了让运行出来代码被认定是data.table格式,我们在j加入.SD(清楚.SD用途小伙伴可以查看data.tablemanual,或者查看笔者上一篇推送用 接下来,我们在by加上一个1,代码如下: mtcars[1, .SD, 1] 再来看看运行结果: ? 这时多了一列变,变名缺失,且只有一行观测值为数字“1”。 最后,我们j1添加进去,代码与结果如下: mtcars[1, 1, 1] ? 结 果析 从这样一段拆解当,我们大致就可以明白为什么会出现这样结果了,整体运行思路就是:首先选出了第一行,而后在by以一个变名默认为NA为基准,最后在j生成了一个默认变名为V1

    20630

    能让R按行处理数据?

    (fund_name)] 其关键在于拼接函数c(),它拼接成了一列。另外,这个操作是是有点熟悉? 事实上,data.table也整合了reshapecast和melt函数,并且cast函数升级为dcast,感兴趣小伙伴可以去研究一番。 在拉直数据后,接下来要做工作就很简单了。 其次,最后计算出结果会有NaN(not a number)值,产生这种情况是因为在计算均值出现了0作为除数情况,对此我们需要用!is.finite()其排除。 事实上,大猫把整个过程解成了好几步,如果对于data.table包比较熟悉,完全可以在一行之内搞定所有事情,根本需要把进行数据集、合并: ▶ t.final <- t1[, ":="(mean.scale R<em>的</em>数据处理哲学是<em>向</em><em>量</em>,是列,但这并<em>不</em>妨碍我们按照行进行处理,其<em>中</em><em>的</em>关键,就在于运用 c() 函数把<em>不</em><em>同</em><em>的</em><em>向</em><em>量</em>拼接成一个<em>向</em><em>量</em>。 我是大猫,咱们下期见! 附:Stackoverflow<em>的</em>原始问题 ?

    23920

    For循环与化(Vectorization)

    我们定义长度为10000,重复运行1000次,测定计算其运行数时长(为了防止极值对结果影响)。 由于我们需要做某一个元素与前一个元素处理结果,那么只需要元素往后进行移,与原来进行一一对应处理即可,这样便达到了以进行处理模式。 在这里会自动调用已经C++头文件,并自动编译而后运行。调用C++语句,在R语言皆有相对应数据格式。 总结 通过上面运行效率排序可以发现: 我们也可以总结出以下两点: 在R语言一般意义上数据操作,能够化尽进行化,For循环尽避免使用。 利用data.table进行数据操作有着比R本身化更好效率表现,如果自身对效率要求更高,可以利用更底层语言接口进行编写。 最后还有一点需要注意:化并能解决一切问题。

    11030

    data.table语句批处理变

    :`除权除息日\r\n[报告期] 2010一季`,这是一个非常脏原始数据变名,除了变名是文,需要用``符号进行引用以外,间还有知道什么时候会冒出来空格、换行符等等,笔者也是试了好几次才真正名输入正确 批 处理法:用lapply批处理变 在此时lapply妙用就显现出来了,在Rlapply用来对list每一个element进行相处理,如何把它运用到data.table,话多说先上代码: 我们知道在data.table,.SD是经过i和by处理之后剩下那部数据集,它格式是一个data.table时它是一个list。 如何把处理好这些变与变名进行对应,这里就用到了colnames()这个函数,提取出我们这个data.table第3到第34个变名字,这样就可以名和更改格式后按顺序进行一一匹。 下 期预告 下期大猫R语言课堂还是由村长来进行撰写和推送,届时大家带来一个比较有趣data.table发现,敬请期待!! ?

    25030

    Matt Dowle 演讲节选(二)

    写在前面 也许很多小伙伴都注意到了,这一期文章和往期排版有所,因为从这一期开始,大猫使用markdown来进行写作,并在最后用css来进行渲染输出。 Matt 接着想,如果我还想要数据集按照特定变组呢?何组这个命令也一块整合进去? 选择、运算、组,三个截然命令被完美整合到了DF[i, j, by]语法,更妙是,上一步运算结果可以直接作为下一步输入数据集! :把变v1从第1行到第1000行别设为1至1000。 30钟足够你用来享受下午茶(愧是腐国人Orz)或是享用午餐……这是一个严肃问题,从5秒降低到1秒?没什么人会在意。从10秒降低到1秒?稀奇。但是我们讨论却是从30钟降低到3秒!”

    14730

    R海拾遗--data.table初级学习

    data.table初级学习 概述 data.table对于大数据数据整理较为便捷,很多时候比data.frame效率更高,一般情况下结合管道符号进行计算 管道符 %in% 表示包含 %>% 表示右传递 %$% 表示右传递并直接按列操作 安装 install.packages("data.table") install.packages("magrittr") library(magrittr) library # 列名 names(iris) # 选取列 iris[ , Species] # 返回一组 iris[ , . ")) # 子集筛选与过滤 iris[Species == "setosa"] # 设索引提升效率 # setkey()函数可以在数据集上设键值。 好key后,data.table数据按照key来排序 setkey(iris, Species) iris[c("setosa", "virginica")] 结束语 来及解释,时间来及了,今天就简单这样吧

    17230

    还在用tm?你OUT啦!

    写 在前面 一提到用R做文本挖掘,小伙伴们最先想到应该是tm包。确,作为R平台文本挖掘首选框架,tm包实现了文本转换至一切工作,tm甚至还可以实现停用词以及词频析等一切简单文本析。 虽然tm处理help文件那些样例数据集似乎就是一眨眼事,但是一旦要处理语料库增加值几十万甚至上百万条,那么你会发现永远也等到执行完毕那一天了。 而此时对于原有包修修补补并能根本性解决为题,唯一出路就是重新设计包,并性能作为重要目标融入在底层设计。Quanteda就是在这样背景下诞生。 Quanteda在内部使用data.table进行大文件索引,tm相比效率大大提升。 由于文本很多词出现频率高,所以当文本转换为时会产生稀疏矩阵,稀疏矩阵会占用大内存并降低性能。Matrix包则对于稀疏矩阵进行了很多优化,是当前计算稀疏矩阵最快包。

    18320

    「R」data.table 包功能特性学习

    来自很久之前官网文档。 data.table包提供了一个加强版data.frame。它运行效率极高,而且能够处理适合内存大数据集。它通过[ ]实现了一种自然数据操作语法。 1 A -0.380 7 ## 6: 1 C 0.341 9 ## 7: 2 A -0.703 10 ## 8: 2 C -0.746 12 对j列进行操作 # 返回第二列为一个 ## 8: B -0.746 ## 9: C 0.341 ## 10: A -0.703 ## 11: B -0.380 ## 12: C -0.746 # 返回V1列所有元素和为一个 (V4.sum=sum(V4)), by=sign(V1-1)] ## sign V4.sum ## 1: 0 36 ## 2: 1 42 # 跟上面一样,但组变取一个新名字 0.341 1 ## 2: 2 A -0.746 4 ## 3: 1 A -0.380 7 ## 4: 2 A -0.703 10 ## 5: NA D NA NA # 注意与上面

    19710

    开发ETL为什么很多人用R用Python

    探讨RETL体系 ETL在数据工作起着至关重要作用,主要用途有两个:(1)数据生产(2)为探索性数据析与数据建模服务。 做过建模小伙伴都知道,70%甚至80%工作都是在做数据清洗;又如,探索性数据会涉及到各种转类汇总、长宽表转换、连接等。因此,ETL效率在整个项目起着举足轻重作用。 测试数据长这样: 废话多说,先看部结果截图吧。 上图截取是复杂groupby问题对于5G与50G数据各ETL工具用时情况,项目运行服务器内存为128G,核数40。 测试内容:对于id3, id4两列类汇总求v3数与标准差 data.table用时10.5秒 data[, . 目前本人工作负责一个项目数据生产,大致流程如下。首先,用presto从hive读取数据,从ADB读取数据,数据在5G左右。

    52430

    一行代码搞定组回归

    写 在前面 在目前为止所有小伙伴们大猫请教过R问题,大猫总结了最常遇见时也是比较难三个问题,别是(1)事件研究法;(2)组回归;(3)滚动回归。 事件研究法在第一期已经讲述,本期我们就来瞧瞧如何做组回归~ PS:由于微信限制,大猫留言小伙伴超过48小时后大猫就能回复你们了。所以如果想联系大猫,可以按照文章最后微信号加大猫微信哦。 keyby语句为data.table组语句,它能够对keyby每一个值(这里为abcde)都别跑一次回归。 如果我们回归是单自变而是双自变,那么每个组就会有三行观测了,一行是截距,还有两行是系数。 拓 展 这时有小伙伴可能想问,有没有可能时计算两个回归方程?比如还是上面这个数据集,我想时输出带系数回归结果和带系数回归结果,应该怎么做?

    1.1K40

    相关产品

    • 消息队列 CMQ 版

      消息队列 CMQ 版

      消息队列 CMQ 版(TDMQ CMQ 版)是一种分布式消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券