首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

data.table包的语法简洁,并且只需一行代码就可以完成很多事情。进一步地,data.table某些情况下执行效率更高。...%>%的功能是用于实现将一个函数的输出传递给下一个函数的第一个参数。注意这里的,传递给下一个函数的第一个参数,然后就不用写第一个参数了。在dplyr分组求和的过程,还是挺有用的。...返回匹配到键值所在(V2)所有行的第一行 > DT["A", mult ="first"] V1 V2 V3 V4 1: 1 A -1.1727 1 2、nomatch参数——未匹配样本处理...—————————————————————— 实战一:在data.table如何选中,如何循环提取、操作data.table?...(x)] 还有 data$x 如果有很多名字很长的指标,data.table如果按进行遍历呢? data[,1]是不行的,选中的方式是用列名

7.8K43

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

一个R对象转化为data.table,R可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,行名存在"rn"行,keep.rownames...,比as.data.table快,因为以地址的方式直接修改原对象,没有拷贝 copy(x) 深度拷贝一个data.table,x即data.table对象。...,会传递给setkey showProgress,TRUE会显示脚本进程,R层次的C代码 data.table,TRUE返回data.table,FALSE返回data.frame 实例如下,1.8GB...#取第二行 DT[2:3] #取第二到第三行 DT[order(x)] #DT按照X排序,简化操作,另外排序也可以setkey(DT,x),出来的DT就已经是按照x排序的了。...比如此例取出DT X 列为"a"的行,和"a"进行merge。on参数的第一必须是DT的第一 DT[.

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

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

因此,在对大数据处理上,使用data.table无疑具有极高的效率。这里主要介绍在基因组数据分析可能会用到的函数。...,会传递给setkey showProgress TRUE会显示脚本进程,R层次的C代码 data.table TRUE返回data.table,FALSE返回data.frame 可见...转换后 当然,上述过程也可以用data.table[ i , j , by ]语法做 但是如果我要将上述DT的v3作为一个影响因素,作为tag,先按v1、v2汇总,再将对应的v4值分为v3=1和v3...如果TRUE,在工作台产生交互信息,默认options(datatable.verbose=TRUE) 对于前面的DT,我现在f和d开头的列名的列作为测量变量,如下 pattern函数下面会讲...也有不同之处,一是use.names参数,可以指定是否使用相同列名bind,二是rbindlist可以使用在不知道对象名字的情况下,比如lapply(fileNames, fread) 。

3.3K10

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

rm(list=ls()) gc() 2、索引切片聚合 data.table中提供了行索引、切片、分组功能于一体的数据处理模型。...data.table索引 索引与数据框相比操作体验差异比较大,data.table索引摒弃了data.frame时代的向量化参数,而使用list参数进行列索引。...索引的位置不仅支持列名索引,可以直接支持内建函数操作。 mydata[,.(flight/1000,carrier,tailnum)] 支持直接在索引位置新建,赋值符号为:=。...注意以上新建时,如果只有一列名比较自由,写成字符串或者变量都可以,但是新建多,必须严格按照左侧列名为字符串向量,右侧为列表的模式,当然你也可以使用第二种写法。...当聚合函数与data.table的分组参数一起使用时,data.table的真正威力才逐渐显露。 mydata[,.

3.6K80

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

例如,使用setkey()id设置为product_info的一个键: setkey(product_info, id) 同样的,函数无任何返回,但我们已经为原始数据设置了键,而且原来的数据看起来也没变化...例如使用id和date定位toy_tests的记录: setkey(toy_tests, id, date) 现在提供key的两个元素就可以获取记录了 toy_tests[....对数据进行分组汇总 by是data.table另一个重要参数(即方括号内的第3个参数),它可以数据按照by值进行分组,并对分组计算第2个参数。...(waterproof)] #> waterproof V1 #> 1: no 10.00 #> 2: yes 5.75 可以看到结果存储在V1,我们可以手动指定列名...,by所对应的组合的值是唯一的,虽然实现了目标,但结果没有设置键: key(type_class_test0) #> NULL 这种情况下,我们可以使用keyby来确保结果的data.table自动

6K20

5个例子比较Python Pandas 和R data.table

我们介绍的示例是常见的数据分析和操作操作。因此,您可能会经常使用它们。 我们将使用Kaggle上提供的墨尔本住房数据集作为示例。...另一方面,data.table仅使用列名就足够了。 示例3 在数据分析中使用的一个非常常见的函数是groupby函数。它允许基于一些数值度量比较分类变量的不同值。...N”可作为data.table的count函数。 默认情况下,这两个库都按升序对结果排序。排序规则在pandas的ascending参数控制。data.table中使用减号获得降序结果。...示例5 在最后一个示例,我们看到如何更改列名。例如,我们可以更改类型和距离的名称。...inplace参数用于结果保存在原始数据帧。 对于data.table,我们使用setnames函数。它使用三个参数,分别是表名,要更改的列名和新列名

3K30

生信技能树 Day5 文件读写

用project管理工作目录报错:文件不在工作目录下 no such file or directory/拼写错误(tab补齐或复制)显示文件后缀2.文件读取# read.系列函数# read.table...不是数据#1.读取ex1.txtex1 <- read.table("ex1.txt") # 列名变成了表格的正式内容,数值列名的加入变成了字符ex1 <- read.table("ex1.txt"...,header = T) # 文件有列名的话让列名归位#2.读取ex2.csvex2 <- read.csv("ex2.csv") # 行名当成了第一并加了列名x;列名_特殊字符被转化为.ex2 <...)R语言转换完要检查一下,看行列名数据有没有变化,及时调整参数改正3....,data.table = F)##不支持直接设置行名,设置行名用下面函数实现library(tibble)ex2 = column_to_rownames(ex2,"V1") # 把V1设为行名#riolibrary

9310

Day4-5 R语言代码

可以让R不修改行列名字,PS:R语言中行列名不能有特殊字符; 2)row.names = 1”这个参数意思时不能把第一作为行名;PS:R语言中行名不能重复,如果将有重复的A设为行名,需要先不将...row.name参数添加进来,处理A的重复值(去重复、两行取平均值合并为一行),再设置为行名。...iris.csv") #导出列表 ls = split(iris,iris$Species) export(ls,file = "ls.xlsx") (4)fread()函数适用范围广且很智能,在读取过程不需要添加过多参数...,而且读取大文件速度快,不过读取的数据会被默认为"data.table"格式,需要添加参数"data.table=F"来避免 #data.table ex1 = data.table::fread("ex1...4、本地安装,R包zip文件下载下来,然后放在工作路径 devtools::install_local(“xxxx.zip”) 5、window电脑可能会存在的权限问题 6、R包不会用,有作者的第一手教程

22220

data.table包使用应该注意的一些细节

freadnThread 参数的使用   注意默认nThread=getDTthreads(),即使用所有能用的核心,但并不是核心用的越多越好,本人亲自测试的情况下,其实单核具有较强的性能,只有在数据大于...  as.matrix作用于data.table时会调用as.matrix.data.table,有一个rownames参数可以指定保留为行名的 矩阵转换成data.table时可以保留列名   在...as.data.table函数同样有一个rownames参数,设置为T可以行名保留下来作为data.table的一 不建议set和for循环一起使用   虽然set可以在内存上直接改变数值,但在R...fintersect, fsetdiff, funion,fsetequal函数能对不同数据框的行求交集,差集,并集等 可以直接对按分隔符进行分割   应用tstrsplit函数可以按照分隔符分成多...,函数返回的是一个列表,举例:DT[, c("c1", "c2") := tstrsplit(x, "/", fixed=TRUE)][],x按照/分隔,分割成c1,c2两 支持类似于SQLs的分组运算

1.5K10

R语言入门之数据的导入和导出

第一部分 导入数据(Importing Data) 在我们平时的研究工作,经常使用的是逗号分隔文件(.csv文件)、制表符分隔文件(.tsv文件)和空格分隔文件(.txt文件)。...‘来分隔 #第一个参数是读入的文件(由文件所在路径及其文件名构成) #第二个参数是指定是否第一行作为列名,TRUE表示第一行即为列名 #第三个参数是指定分隔符 #第四个是指定行名所在的,指定列名为“...id”这一的数据为行名 mydata <- read.table("c:/mydata.csv", header=TRUE, sep=",", row.names="id") (2)读取制表符分隔文件...直接高效读取以.gz结尾的压缩文件 一般在R可以使用gzfile()的方式读取压缩文件,但如果使用data.table包里的fread()函数则可以大大提高工作效率。...具体方法如下: #安装并加载data.table包 #使用fread()函数读取文件,这里参数和之前的一致 #唯一的不同就是fread()可以直接读取压缩文件 install.packages(‘data.table

3.2K40

Day05 生信马拉松-文件的读写

",会导致所在数据格式变化正确使用:read.table("ex1.txt",header = T) 发现问题要从函数的帮助文档里找参数解决1.3 .csv文件的读取常见错误:read.csv("ex2....csv"),直接使用read.csv()函数会出现以下错误①列名分隔符"-"被改为"."②第1默认被添加列名"x"图片正确使用:read.csv("ex2.csv",row.names = 1,check.names.../"为上一级文件,可叠加1.6 补充内容1.6.1 数据框不允许重复的行名图片解决方案: ①先不加row.names参数读取 ②处理第1重复值(去重、均值、合并为一行等) ③第1设为行名1.6.2...数据框数据缺失图片错误解决方式soft <- read.table("soft.txt",header = T,fill = T),会出现原有确实数据位置的错列图片正确使用:soft2 <- read.table...用于文件的读取/导出的packages图片3.1 data.table:soft = data.table::fread("soft.txt",data.table = F)每次要默认标注“data.table

18920

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

参数配置方面是和原生的read.xxx()函数族是看齐的。...tidyr主要提供了一个类似Excel数据透视表(pivot table)的功能,提供gather和spread函数数据在长格式和宽格式之间相互转化,应用在比如稀疏矩阵和稠密矩阵之间的转化。...setdiff(x, y): x 和 y 的补集 (在x不在y) 更多详细操作可以参考由SupStats翻译的 数据再加工速查表,比Python的老鼠书直观很多。...比如: 这时候broom包就派上用场了,直接统计结果转化为data frame格式: glance()函数,返回data frame格式的部分参数结果 七....data.table还参考了NoSQL中流行的Key-Value形式,引入了setkey()函数,为数据框设置关键字索引。

3.8K120

从零开始的异世界生信学习 R语言部分 04 文件的读写与认知

,并且内容的数值变为了字符串 ex1 <- read.table("ex1.txt",header = T) #通常读取txt格式文件,header参数表示文件的第一行作为列名,默认为F 图片 图片...<- read.csv("ex2.csv") 图片 ex2 <- read.csv("ex2.csv",row.names = 1,check.names = F) #row.names= 表示第一为行名...列名是什么 dim(soft) colnames(soft) 数据框导出成表格文件 #5.soft导出为csv write.csv(soft,file = "soft.csv") #导出成csv格式...图片 一个项目的不同部分分别存在不同的文件夹 图片 图片 图片 # data.table的fread函数 soft = data.table::fread("soft.txt",data.table...) b$Sheet1 export(b,"jimmyzhenbang.xlsx") #导出后也为多列表的xlsx文件 export(b$Sheet1,"jimmyzhenbang.csv") #可以列表的一部分就可以导出

1.3K40

《高效R语言编程》6--高效数据木匠

将你的数据整理好是一个可敬的、某些情况下是至关重要的技能,所以作者使用了数据木匠这个词。...这是本书最重要的一章,涉及以下内容: 使用tidyr整理数据 使用dplyr处理数据 使用数据库 使用data.table处理数据 软件配置 library("tibble") library("tidyr...tidyr方便了收集与分割两个常见的操作 gather()收集是列名换成新变量,宽表变成长表,spread()是实现相反过程的函数。...用法是:gather(data,key,value,-religion),分别是数据框,要转换成分类的列名,单元值的列名和清除收集的变量 使用seperate()分割联合变量 分割是指一个实际由两个变量组成的变量分割成两个独立...改名 rename(),使用反引号‘`’包裹,允许R使用不规范的列名

1.9K20

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

1, 第一行第一 a[row(a)==1&col(a)==2] #返回6, 第一行第二 2、一个网络例子: ?...可以看到,计算结果的第一实际上是“SELLERID.CLIENT”,我们需要把它拆分成两并调换顺序才行。...(iris$setosa)] #按照照setosa的大小,重排Sepal.Length数据 四、dplyr与data.table data.table可是比dplyr以及python的...data.table包的语法简洁,并且只需一行代码就可以完成很多事情。进一步地,data.table某些情况下执行效率更高。...data.table比较简洁一步搞定,dplyr花了两步,不过也dplyr也可以通过%>%来实现一步搞定。%>%的功能是用于实现将一个函数的输出传递给下一个函数的第一个参数

20.6K32
领券