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

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

将一个R对象转化为data.table,R可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行中,keep.rownames...; drop,需要取掉的列名或者列号,要其它的; colClasses,类字符矢量,用于罕见的覆盖而不是常规使用,只会使一列变为更高的类型,不能降低类型; integer64,读如64位的整型数;...(a = .(), b = .())] 输出一个a、b列的数据框,.()就是要输入的a、b列的内容,还可以将一系列处理放入大括号,如{tmp data.table的链接符合表达式 DT[v>1, sum(y), by=v] #对v列进行分组后,取各组中v>1的行出来,各组分别对定义的行中的... 填充首尾不匹配的行,TRUE填充,FALSE不填充,与roll一同使用 which TRUE返回匹配的行号,NA返回不匹配的行号,默认FALSE返回匹配的行 .SDcols 取特定的列,然后.

5.9K20

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

因此,在对大数据处理上,使用data.table无疑具有极高的效率。这里主要介绍在基因组数据分析中可能会用到的函数。...需要取掉的列名或者列号,要其它的; colClasses 类字符矢量,用于罕见的覆盖而不是常规使用,只会使一列变为更高的类型,不能降低类型; integer64 读如64位的整型数;..."; row.names 是否写出行名,因为data.table没有行名,所以默认FALSE; col.names 是否写出列名,默认TRUE,如果没有定义,并且append=TRUE...自动设为TRUE,这个时候至少要有一个对象的一列要存在行名; idcol 产生一个index列,默认(NULL)不产生,如果idcol=TRUE,行名自动为.id,当然你也可以直接命名,比如idcol...; which 默认FALSE结果返回x和y行的联合,当是TRUE时,如果mult=“all”,返回两列,一列x列号,一列相对应的y,如果nomatch=NA,不匹配的返回y的NA,如果nomatch

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

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

    其实很早就接触过data.table,之所以一直没有深入应用,因为它的理念与其他数据处理包偏离太远,可以说迁移成本很高,几乎就是技能重构而非迁移。...DT[i,j,by] 如果这个过程是SQL中是由select …… from …… where …… groupby …… having 来完成的,在R的其他基础包中起码也是分批次完成的。...(carrier,tailnum)] #但心里要清楚列索引接受的条件是含有列表的列表,而且这里的列表作为变量给出,而非data.frame时代的字符串向量。 行列同时索引毫无压力。...注意以上新建列时,如果只有一列,列名比较自由,写成字符串或者变量都可以,但是新建多列,必须严格按照左侧列名为字符串向量,右侧为列表的模式,当然你也可以使用第二种写法。...自定义名称: mydata[,.

    3.6K80

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

    data.table包的语法简洁,并且只需一行代码就可以完成很多事情。进一步地,data.table在某些情况下执行效率更高。...data.table中,还有一个比较特立独行的函数: 使用:=引用来添加或更新一列(参考:R语言data.table速查手册) DT[, c("V1","V2") := list(round(exp(V1...),2), LETTERS[4:6])] DT[, c("V1","V2") := NULL] 通过list的方式来更新了数据,以及使用null的方式来删除列。...—————————————————————— 实战一:在data.table如何选中列,如何循环提取、操作data.table中的列?...(x)] 还有 data$x 如果有很多名字很长的指标,data.table中如果按列进行遍历呢? data[,1]是不行的,选中列的方式是用列名。

    9.3K43

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

    fread中nThread 参数的使用   注意默认nThread=getDTthreads(),即使用所有能用的核心,但并不是核心用的越多越好,本人亲自测试的情况下,其实单核具有较强的性能,只有在数据大于...3Gb的情况下,开启10核(我的机器全部核心30多核)效率才比一个核心更高,而默认使用全部的核心效率一直非常低。...as.data.table函数中同样有一个rownames参数,设置为T可以将行名保留下来作为data.table的一列 不建议set和for循环一起使用   虽然set可以在内存上直接改变数值,但在R...  类似于集合运算,data.table中fintersect, fsetdiff, funion,fsetequal函数能对不同数据框的行求交集,差集,并集等 可以直接对列按分隔符进行分割   应用...tstrsplit函数可以将一列按照分隔符分成多列,函数返回的是一个列表,举例:DT[, c("c1", "c2") := tstrsplit(x, "/", fixed=TRUE)][],将x列按照/

    1.5K10

    MySQL Innodb和Myisam

    聚集索引中的记录就地更新,它们隐藏的系统列指向撤消日志条目,可以从中重建记录的早期版本。与聚集索引记录不同,二级索引记录不包含隐藏的系统列,也不会就地更新。...当二级索引列被更新时,旧的二级索引记录被删除标记,新记录被插入,并最终被删除标记记录被清除。 当二级索引记录被删除标记或二级索引页被更新的事务更新时,InnoDB在聚集索引中查找数据库记录。...可以读取页,因为它是用户启动的操作(例如 SQL 查询)所必需的,或者是由 自动执行的预读操作的一部分 InnoDB。 访问旧子列表中的页使其 “年轻”,将其移动到新子列表的头部。...随着数据库的运行,缓冲池中未被访问的页会通过向列表尾部移动来“老化”。新旧子列表中的页随着其他页的更新而老化。旧子列表中的页也会随着页插入中点而老化。最终,一个未使用的页到达旧子列表的尾部并被驱逐。...同样,删除和更新可能会影响索引树中不相邻的二级索引页。稍后在其他操作将受影响的页读入缓冲池时合并缓存的更改,可避免大量随机访问 I/O,而这些 I/O 将需要将二级索引页从磁盘读入缓冲池。

    1.7K20

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

    对于data.frame大家应该很熟悉,它可以存储不同数据类型的向量数据。今天给大家介绍一个升级版的data.frame,其不仅可以存储不同数据类型还可以进行多列的并行运算。...as.data.table 将R对象转化为data.table格式的数据,其对象可以为列表,向量,data.frame。...列的选取也发生了改变,其中引入了list的别名 .() 进行数据筛选: DT[,y] DT[,.(y)] ?...3. data.table中数据函数的调用以及并行运算的加入: DT[,sum(y)] DT[,.(sum(y),sum(v))] ? 4. 自定义函数的执行,需要用{}包裹所有的命令。...各分组的计数函数.N,例: DT[,.N,by=x] 7. 其中数据各列的增加,删除,修改,用到的函数是:=。 DT[,y1:=y] DT[,y:=NULL] DT[,y:=(y+1)] ?

    2.1K30

    基于HarmonyOS 5.0 (Next)的一种面向多设备跨平台的高性能自适应布局能力研究和实现

    // 除非有特定的布局需求(如响应式布局) // 一般情况下,瀑布流布局的计算会在数据更新时进行...通常,数据会以一个列表的形式存在,每个条目包含了显示所需的所有信息(如图片URL、标题、描述等)。 数据排序:在某些情况下,你可能需要按照特定的顺序(如时间、热度等)来排序数据。...你可以使用ArkUI提供的列表组件(如List),这些组件内部实现了项复用机制。当列表滚动时,只有进入或离开视窗的项会被重新渲染。...使用百分比或Flex布局:在某些情况下,使用百分比或Flex布局可以使组件更容易适应不同的屏幕尺寸。然而,在瀑布流中,由于列的高度是不固定的,因此这种方法可能不太适用。...以下是一个简化的步骤说明,用于计算瀑布流中每个条目的位置和大小: 定义数据结构 首先,定义一个数据结构来存储瀑布流的状态,包括列的数量、每列的高度以及所有条目的信息。

    20830

    R语言 数据框、矩阵、列表的创建、修改、导出

    data.frame生成指定数据框的列名及列的内容,如代码所示,此时列名不需添加"",df1为变量名,格式为列名=列的向量*matrix矩阵与向量一样只允许同一种数据类型,否则会被转换,可以理解为二维的向量...R语言将列名的特殊字符-转化了,该编号可能与其他数据中编号无法匹配,ex2 列为行名,check.names=F指定不转化特殊字符#注意:数据框不允许重复的行名#rod = read.csv("rod.csv",row.names = 1) #再次重复:数据框不允许重复的列名.../则为上一级)#文件是由生成它的函数决定的,不是由后缀决定的,save为csv实际上还是一个Rdata#readr包可以实现base包中的类似功能library(data.table)#其中的fread...不支持l$m1 #取出名为m1的成分变量的删除rm(l) #删除列表lrm(df1,df2) #删除变量df1与df2rm(list = ls()) #清空所有变量附作业答案及解释# 练习3-1# 1

    7.9K00

    MR应知应会:MungeSumstats包

    默认 0.9 FRQ_filter 0-1 SNP 频率(FRQ)允许的最小值(即等位基因频率(AF))(如果在 sumstats 文件中存在)。默认情况下不进行过滤,即值为 0。...pos_se 是否应该检查标准错误 (SE) 列以确保它大于 0?那些存在的内容将被删除(如果 sumstats 文件中存在)。默认为TRUE。...那些这样做的被删除(如果存在于 sumstats 文件中)。默认为TRUE。 N_std 需要删除高于 SNP N 平均值的标准差数。默认值为 5。...这可能会导致错误,因此默认情况下,将保留第一个 RS ID,并删除其余的,例如“rs5772025”。如果您只想完全删除这些 SNP,请将其设置为 TRUE。默认值为 FALSE。...mapping_file MungeSumstats 有一个预定义的列名映射文件,该文件应涵盖最常见的列标题及其解释。

    2.5K11

    Matt Dowle 演讲节选(二)

    > DF[2:3, sum(B)] 注:在 S-PLUS 中,以上命令必须要用一种非常不直观的方式写出来,如下: > sum(DF[2:3, "B"]) 2004:data.table诞生 2004...而在第二种方法中,由于采用了 assignment by reference,data.table仅对内存中v1所在的地址进行修改,其他地方则不变!事实上,DF 在第二种方法中一遍都没有被复制!...因为任何对列的处理都必须导致数据集在内存中的复制,也即假如我们的内存是 4G,那么在使用data.frame的情况下,我们最大就只能处理 2G 的数据集!...一个更极端的例子是,加入你在 4G 内存中 装下了一个 3G 的数据集,这时你想要删去其中的一列都是不可能的,因为在data.frame中,哪怕删除操作都会导致数据集的复制!...True,时间是缩短不少,但那意味着许多枯燥的输入。假设你有100列,难道你要每列的class都指定一遍? 这时你就需要fread("test.csv")!不需要输入任何其他的参数,你猜要运行多久?

    1.1K40

    使用管理门户SQL接口(一)

    可以对现有的表和数据执行SQL查询,创建表,或插入、更新或删除表数据。...可以编写SQL代码直接转化为一个文本框(包括选择、插入、更新、删除、创建表和其他SQL语句),检索语句的SQL历史文本框,拖拽一个表到文本框来生成一个查询(SELECT语句),或构成一个查询(SELECT...Actions -定义一个视图; 打印一个表定义的详细信息; 通过运行调优表和/或重建索引提高查询的性能; 或者通过清除不需要的缓存查询和/或删除不需要的表、视图或过程定义来执行清理。...可以使用X图标删除文本框的内容。使用Show History列表选择前面的SQL语句。 选中的语句将复制到文本框中。 执行时,该语句移到Show History列表的顶部。...可以单击任何列标题,根据列值按升序或降序排列SQL语句。从Show History列表中执行SQL语句将更新其执行时间(本地日期和时间戳),并增加其计数(执行次数)。

    8.4K10

    Excel的SNP数据如何变为plink格式

    Excel格式的xls或者xlsx格式的文件 测序公司给的是xls或者xlsx格式的数据,数据的格式如下: 第一列是ID 第二列是染色体 第三列是物理位置 第四列是Ref 第五列以后是每个个体的具体分型...这个一般是map和ped数据不匹配,可以通过R中的map和map查看一下什么情况: > dim(map) [1] 43251 4 > dim(ped) [1] 185 43257 可以看到...当然,上面的位点中,有些是多态性的位点,稀有的多态位点会作为缺失。 常见问题3:indel位点 plink格式不支持indel位点,需要将indel位点删除。...思路: 将其读取到R中 转置 保存到本地 然后通过grep,去掉相关的行 然后再读到R中,再进行处理。 报错总结 数据有空行,有缺失,有indel。...更新的代码中,判断是否有空行,将NN作为缺失读取到R中,可以避免上面的情况,更新后的代码如下: library(openxlsx) library(tidyverse) library(data.table

    1.7K10

    ggplot2热图扩展包(ggalign)的细节

    使用以下自定义布局: align_group():将布局轴分组到具有组变量的面板中。 align_kmeans():通过 kmeans 将布局轴分组到面板中。...scale_color_brewer(palette = "Dark2") 与其他 ggplot2 热图扩展比较 ggalign 相对于其他扩展如 ggheatmap 的主要优势在于其与 ggplot2...树状图可以轻松自定义和着色。 对图表大小和间距有灵活的控制。 可以通过面板区域轻松与其他 ggplot2 图表对齐。 可以轻松扩展用于其他聚类算法或注释图表。...除了ggplot2元件外,我们还可以在注释中添加任何align_*()函数,align_*()函数可以添加图表,也可以自定义布局,例如排序,聚类,分组等。...由于 align_group() 不创建新图表,因此面板标题只能添加到热图中。

    13010

    MySQL行格式原理深度解析

    MySQL中的行格式(Row Format)是指存储在数据库表中的数据的物理格式。它决定了数据是如何在磁盘上存储的,以及如何在查询时被读取和解析的。...存储长度信息有助于数据库正确地解释和重构数据,特别是在进行读取、更新或删除操作时。 2....在实际应用中,由于行中还包括其他信息(如变长字段列表、NULL值列表、记录头信息等),实际可存储的字符数可能会更少。 此外,当字段的数据太大时,InnoDB会将其分成多个部分存储,这称为溢出列。...NULL 值列表:如果表中的某些列被定义为允许 NULL 值,并且实际上存储了 NULL 值,那么 InnoDB 需要在行中为每个 NULL 列分配一个额外的字节(在某些情况下,多个 NULL 列可能共享相同的字节...内部碎片和空间复用:InnoDB 可能会在行内留出一些空间以便将来的更新操作,这可能导致一些空间的浪费。此外,由于删除和更新操作,页内可能会留下一些未使用的空间,这些空间可能不会被完全利用。

    70910

    好强一个Julia!CSV数据读取,性能最高多出R、Python 22倍

    单线程CSV.jl比data.table快2.5倍,而在10个线程中,CSV.jl则大约比data.table快14倍。 字符串数据集 II 该数据集的大小与字符串数据集 I 中相同。...在这种情况下,单线程的data.table大约比CSV.jl快5倍。线程的增加,CSV.jl稍慢于R。...可以看出,在所有八个数据集中,Julia的CSV.jl总是比Pandas快,并且在多线程的情况下,它与R的data.table互有竞争。...在Julia,Python和R的测试中,引发了网友们更多关于“技术更新”的热烈讨论。...不过,也有网友表达了对“更新重置成本”的担忧: 我认为Python的生态系统已经成熟,并且在过去的1-2年中已成为标准,这具有巨大的价值。

    2K63

    MSSQL之三 在表中操纵数据

    INSERT子句指定要插入数据的表名或视图名称,它可以包含表或视图中列的列表。VALUES子句指定将要插入的数据。...数据值的数量必须与表中或列表中的属性的数量一样。 2. 插入信息的顺序必须与为插入列出的属性的顺序相同。 3. 值从句不需要包含带有IDENTITY属性的列。 4....【例 3-12】 删除所有教师的授课记录。​ 程序清单如下: DELETE FROM TC 执行此语句后,TC表即为一个空表,但表的定义仍存在数据字典中。 ​...第一个FROM子句用于指定将要删除的数据所在的表或视图名称,第二个FROM子句用于指定将要删除的数据的其他复杂的条件。 DELETE语句只是删除表中的数据,表结构依然存在于数据库中。...当truncate被使用的时候,删除行不进入事务日志。 1、当插入行到表中的时候,哪个语句是不正确的? A、数据值的数量必须与表中或列表的属性中的数量一样。

    6510
    领券