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

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

索引支持是data.table另一个独特功能,即我们可以创建键(key),使用键获取记录及其高效。...中,by所对应的组合中的值是唯一的,虽然实现了目标,但结果中没有设置键: key(type_class_test0) #> NULL 这种情况下,我们可以使用keyby来确保结果的data.table自动将...(year = year(date))] } 这里我们使用.SD[[x]]提取x列的值,这跟通过名字从列表中提取成分或元素相同。...,而是使用market_data[, (columns) := list(...)]来动态设定列,其中columns是一个包含列名的字符向量,list(...)是每个列对应的值: price_cols...举例,我们现在需要对每个价格列调用na.locf()以去掉缺失值,先获取所有的价格列: cols = colnames(market_data) price_cols = cols[grep("^price

6.4K20

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

因此,在对大数据处理上,使用data.table无疑具有极高的效率。这里我们主要讲的是它对数据框结构的快捷处理。...将一个R对象转化为data.table,R可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行中,keep.rownames...当使用dt_names = names(DT)的时候,修改dt_names会修改原data.table的列名,如果不想被修改,这个时候应copy原data.table,也可以使用dt_names 的值,rownum行号,colnum,列号,行号列号推荐使用整型,保证最快速度,方法是在数字后面加L,比如1L,value是需要赋予的值。...,默认FALSE,如果TRUE,跳过空白行 key,设置key,用一个或多个列名,会传递给setkey showProgress,TRUE会显示脚本进程,R层次的C代码 data.table,TRUE

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

    R练习50题 - 第一期

    只可惜Renkun并没有提供答案,所以我们在这里提供我们的版本。 我们的所有答案都将使用data.table这个包。我们认为data.table是最优秀的数据处理工具,没有之一。...值得说明的有一下几点: 数据集为“面板数据”:包含多个股票(横截面),而每个股票则有多个按照日期排序的变量(时间序列) 股票代码symbol 和日期date共同组成了数据集的key,也即每个唯一的symbol...unique:找出symbol中不重复的值。 在data.table的语法中,先进行列选择操作,再对列进行处理。所以上述语句会先执行str_detect,再执行unique。...这是因为data.table的第一个语句用来对列进行选择,由于我们这里需要对所有列进行统计,所以不需要进行任何操作。 keyby用来进行分组,是整个代码的核心。先来看keyby = ....其中,updown是我们新建的字符变量,用来表示分组,它只取两个值:UP, DOWN。这其中的难点是建立updown这个变量。我们使用了ifelse这个函数。

    2.5K40

    手把手教你用R语言读取CSV文件

    导读:R语言有许多种方法去获取数据,最常用的是读取CSV文件。 作者:Jared P. Lander 来源:大数据DT(ID:hzdashuju) ?...读取CSV文件最好的方法是使用read.table函数,许多人喜欢使用read.csv函数,该函数其实是封装的read.table函数,同时设置read.table函数的sep参数为逗号(",")。...将该参数设为FALSE(默认是TRUE)可使字符所在列不被转换成factor列。这样既节省计算时间(当大数据集包含许多字符列,也意味着有许多唯一值),又能保留列为字符。...该函数读取速度比read.table函数快,结果为data.table对象。data.table对象是data.frame的扩展,其是data.frame的优化。...read_delim或者fread函数读取文件都非常快,具体使用哪个函数取决于dplyr或者data.table包中哪个更适合数据处理。 关于作者:贾里德 P. 兰德(Jared P.

    22.4K21

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

    包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部处理的步骤进行了程序上的优化,使用多线程,甚至很多函数是使用C写的,大大加快数据运行速度。...因此,在对大数据处理上,使用data.table无疑具有极高的效率。这里主要介绍在基因组数据分析中可能会用到的函数。...需要取掉的列名或者列号,要其它的; colClasses 类字符矢量,用于罕见的覆盖而不是常规使用,只会使一列变为更高的类型,不能降低类型; integer64 读如64位的整型数;...显示没有联合成功的行列 value.var 填充值的列,默认会猜测 现在我需要取数据DT的v1,v2两列相同的情况作为汇总的一类,对它们的v4值取平均,转换如下,...by.y默认key(y); maxgap 设定两个区域空白区允许的最大值,参数尚不能使用; minoverlap 设定两个区域最小的重叠区,参数尚不能使用; type

    3.4K10

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

    data.table) melb <- fread("datasets/melb_data.csv") 示例1 第一个示例是关于基于数据集中的现有列创建新列。...另一方面,data.table仅使用列名就足够了。 示例3 在数据分析中使用的一个非常常见的函数是groupby函数。它允许基于一些数值度量比较分类变量中的不同值。...我们求出了房屋的平均价格,但不知道每个地区的房屋数量。 这两个库都允许在一个操作中应用多个聚合。我们还可以按升序或降序对结果进行排序。...data.table中使用减号获得降序结果。 示例5 在最后一个示例中,我们将看到如何更改列名。例如,我们可以更改类型和距离列的名称。...类型:HouseType 距离:DistanceCBD 数据集中的distance列表示到中央商务区(CBD)的距离,因此最好在列名中提供该信息。

    3.1K30

    能不能让R按行处理数据?

    data.table是目前R中人气最高的数据处理包。 2....首先,假设我有一个这样的数据集(暂且命名为t1): ? 现在我想做的是对于每一行,找出非NA的值,填充到“mean.scale”这个新的变量;如果有多个非NA,那么就计算其平均值。...(fund_name)] 其中的关键在于拼接函数c(),它将不同列的向量拼接成了一列。另外,这个操作是不是有点熟悉?...我们只要把数据按照fund_name分组,然后对每组求scale的均值。唯一需要注意的有两点。首先,别忘了mean中的na.rm = T参数,它能够让函数忽略缺失值。...其次,最后计算出的结果中会有NaN(not a number)值,产生这种情况是因为在计算均值中出现了0作为除数的情况,对此我们需要用!is.finite()将其排除。

    1.4K20

    人工智能大模型的好处之任意数据结构的转换

    列表(List): 列表是R中非常灵活的数据结构,可以包含不同类型的元素,包括其他列表。 数据框(Data Frame): 数据框用于存储表格数据,类似于矩阵,但可以包含不同类型的列。...这里有两种方法来做到这一点,并且将原始的列表元素名称作为新数据框的一个列。...(data.table) 然后,使用rbindlist函数将列表转换为数据框: # 假设 mylist 是你的列表 mylist <- list( vec1 = c(1, 2, 3), vec2...在这个例子中,Reduce函数迭代地将列表中的向量组合(通过cbind)成一个单一的数据框,names(mylist)用于获取列表元素的名称并设置为新数据框的列名。...选择哪种方法取决于你的具体需求和偏好。如果你已经在使用data.table包进行数据处理,那么使用rbindlist可能是一个更直接的选择。

    8910

    RNA-seq入门实战(三):在R里面整理表达量counts矩阵

    /counts/counts.txt', header = T,data.table = F)#载入counts,第一列设置为列名 colnames(a1) counts <...table(duplicated(symbol)) #统计重复基因名 ###使用aggregate根据symbol列中的相同基因进行合并 counts <- aggregate(counts...初步过滤低表达基因与保存counts数据 我们的数据中会有很多低表达甚至不表达的基因,在后续分析中可能会影响数据的分析判断,因此需要对低表达的基因进行筛除处理。筛选标准不唯一,依自己数据情况而定。...(这个是正常现象,因为我们的gtf文件里面的基因数量太多了,都是五六万个,而正常情况下我们的样品里面就两万多个基因是有表达量的) #### 初步过滤低表达基因 ####(筛选标准不唯一、依情况而定) #...这里只展示了获取基因表达的TPM值,如果还想了解如何获得FPKM值请参考文章:获取基因有效长度的N种方法中第二部分内容以及Counts FPKM RPKM TPM 的转化。

    20.2K56

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

    可怜的机器呀,内存和磁盘要撑爆了~ 使用data.table内的I/O函数进行导入: rm(list=ls()) gc() library("data.table") system.time(...data.table列索引 列索引与数据框相比操作体验差异比较大,data.table的列索引摒弃了data.frame时代的向量化参数,而使用list参数进行列索引。...(carrier,tailnum)] #但心里要清楚列索引接受的条件是含有列表的列表,而且这里的列表作为变量给出,而非data.frame时代的字符串向量。 行列同时索引毫无压力。...注意以上新建列时,如果只有一列,列名比较自由,写成字符串或者变量都可以,但是新建多列,必须严格按照左侧列名为字符串向量,右侧为列表的模式,当然你也可以使用第二种写法。...当整列和聚合的单值同时输出时,可以支持自动补齐操作。 当聚合函数与data.table中的分组参数一起使用时,data.table的真正威力才逐渐显露。 mydata[,.

    3.6K80

    R语言第一章数据处理基础②一行代码完成数据透视表目录

    (c("ramnathv/htmlwidgets", "smartinsightsfromdata/rpivotTable")) 数据透视表应出现在的RStudio的Viewer中。...data可以是data.frame表或data.table。...如果仅选择数据,则数据透视表将打开,行和列上没有任何内容(但您可以随时拖放行或列中的任何变量) rows and cols允许用户创建报告,即指示哪个属性将在行和列上。...aggregatorName表示聚合的类型。...这里的选项很多:计数,计数唯一值,列表唯一值,总和,整数和,平均值,总和,80%上限,80%下限,总和为总分数,总和为行数,总和为列的分数,计为总分数,计算为行的分数,计为列的分数 renderers决定了用于显示的图形渲染类型

    1.7K10

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

    首先在单线程下,data.table(fread)比CSV.jl快1.6倍。 而在使用多线程处理时,CSV.jl则表现得更好,是data.table速度的2倍以上。...苹果股价数据集 该数据集包含50000k行和5列,大小为2.5GB。这些是AAPL股票的开盘价、最高价、最低价和收盘价。价格的四个列是浮点值,并且有一个列是日期。 ?...异构数据集的性能 接下来是关于异构数据集的性能测试。 混合型数据集 此数据集具有10k行和200列。这些列包含的数据值类型有:String,Float,DateTime、Missing。 ?...这些列是异构的,其数据值类型有:String、Int、Float、Missing。 ? Pandas需要119秒才能读取此数据集。 单线程data.table读取大约比CSV.jl快两倍。...但是,使用更多线程,Julia的速度与R一样快或稍快。 宽数据集 这是一个相当宽的数据集,具有1000行和20k列。数据集包含的数据值类型有:String、Int。 ?

    2K63

    文件的读写20230204

    > soft 列没有值Error in scan(file = file, what = what, sep = sep, quote...图片图片因此可以得知,fill=T虽然可以读入文件,但是也会导致“问题文件”的读入错误,因为它的默认值是sep=" ",会把一整个空格认为也是分隔符,导致第五列的内容被错误的放入了空着的第四列。...("ex2.csv")图片图片data.table包:fread()1) 非常方便,可以准确读取一些“问题文件”,例如刚刚有缺失空列的soft.txt,最好带上参数 data.table=F,可以确保产生干净的数据框...> soft_1data.table::fread("soft.txt",data.table = F)(非常方便,不需要乱七八糟的参数,可以读出复杂的文件)rio包:1) import() 可以读入一些后缀不正确的包...读取这个表格文件的不同工作簿3)export() 可以把一个由多个数据框组成的列表输出为带有多个工作簿的表格文件ps:如果单个数据框导出,可以把后缀改成.csv.

    1.5K111

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

    ‘来分隔 #第一个参数是读入的文件(由文件所在路径及其文件名构成) #第二个参数是指定是否将第一行作为列名,TRUE表示第一行即为列名 #第三个参数是指定分隔符 #第四个是指定行名所在的列,指定列名为“...#读取制表符分隔文件和读取逗号分隔文件的方法很类似 #唯一不同可能就在与sep这个参数后边的值是\t,实际上\t就是指制表符 mydata 的压缩文件 一般在R中可以使用gzfile()的方式读取压缩文件,但如果使用data.table包里的fread()函数则可以大大提高工作效率。...具体方法如下: #安装并加载data.table包 #使用fread()函数读取文件,这里参数和之前的一致 #唯一的不同就是fread()可以直接读取压缩文件 install.packages(‘data.table...function()的方法 (2)推荐刚入门的小伙伴下载Rstudio,使用起来很方便 (3)data.table这个包的一些功能可能依赖其它包,需要将其依赖包也安装上

    3.4K40

    R语言学习笔记-Day4

    -可以粗略理解为多个函数的打包存档-有的R包中会有数据,甚至只有数据没有函数-包含函数/数据、帮助文档、描述文件等。...学习目的:找到所有R包的使用规律3 R包镜像镜像网站相当于主网站的副本(备份),访问主网站存在障碍时可选择访问镜像网站。...都需要加载6 R包安装和使用的逻辑6.1 安装包-加载包-使用包里的函数library(stringr)library()是检查是否安装成功的标准R包安装成功的唯一标准:library()没有errorstr_detect...参数进行读取;2.处理第一列的重复值(去重复,两行求平均值,合并为一行);3.将第一行设为行名3 数据框导出CSV格式:write.csv()write.csv(ex2,file = "example.csv...数据结构,且不支持直接设置行名rio:import()import_list() #导入多个工作簿的excel表格export()data.table读取library(data.table)ex1 =

    15910

    如何使用 uniprot ID 进行 KEGG 和 GO 富集?

    UniProt ID 是指在 UniProt 数据库中为每个蛋白质赋予的唯一标识符。...UniProt ID 的功能和重要性 唯一性:UniProt ID 是每个蛋白质条目的唯一标识,用于区分不同的蛋白质。...跨数据库链接:UniProt ID 还可以用于与其他数据库(如 NCBI、PDB、KEGG 等)的链接,方便获取更全面的生物学信息。...如何使用 UniProt ID 检索蛋白质信息:在 UniProt 官网(https://www.uniprot.org)的搜索框中输入 UniProt ID,可以快速获取该蛋白质的详细信息。...批量查询:UniProt 提供批量查询功能,可以同时查询多个 UniProt ID 的信息。 下载序列:用户可以下载蛋白质的序列信息(如 FASTA 格式),用于进一步的分析。

    10510

    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 的错列图片正确使用:soft2 的读取/导出的packages图片3.1 data.table:soft = data.table::fread("soft.txt",data.table = F)每次要默认标注“data.table

    20920
    领券