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

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

2、cut()函数 cut(x, n):将连续型变量x分割有着n个水平因子 cut(x, breaks, labels = NULL, include.lowest = FALSE, right...3.aggregate函数对分组字段顺序一个奇怪要求:必须反向排列。...5、which定位函数 功能:返回服从条件观测所在位置(行数),一定排序功能在其中。...data.table包提供了一个非常简洁通用格式:DT[i,j,by],可以理解:对于数据集DT,选取子集行i,通过by分组计算j。...data.table比较简洁一步搞定,dplyr花了两步,不过也dplyr也可以通过%>%实现一步搞定。%>%功能是用于实现将一个函数输出传递给下一个函数一个参数。

20.4K32

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

版权声明:本文博主原创文章,转载请注明出处     R语言data.table包是自带包data.frame升级版,用于数据框格式数据处理,最大特点快。...包括两个方面,一方面是写快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部处理步骤进行了程序优化,使用多线程,甚至很多函数是使用C写,大大加快数据运行速度。...将一个R对象转化为data.table,R可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行,keep.rownames...文件路径,再确保没有执行shell命令时很有用,也可以在input参数输入; stringsASFactors是否转化字符串因子, verbose,是否交互和报告运行时间; autostart,...=FALSE] 和x[, .SD, .SDcols=cols]一样 mult 当i 匹配到多行时,mult控制返回行,"all"返回全部(默认),"first",返回第一行,"last"返回最后一行

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

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

另一方面,data.table仅使用列名就足够了。 示例3 在数据分析中使用一个非常常见函数是groupby函数。它允许基于一些数值度量比较分类变量不同值。...我们使用计数函数来获得每组房屋数量。”。N”可作为data.tablecount函数。 默认情况下,这两个库都按升序对结果排序。排序规则在pandasascending参数控制。...data.table中使用减号获得降序结果。 示例5 在最后一个示例,我们将看到如何更改列名。例如,我们可以更改类型和距离列名称。...总结 我们比较了pandas和data.table在数据分析操作过程中常见5个示例。这两个库都提供了简单有效方法完成这些任务。 在我看来,data.table比pandas简单一点。...需要指出是,我们在本文中所做示例只代表了这些库功能很小一部分。它们提供了许多函数和方法执行更复杂操作。 感谢您阅读。如果你什么反馈,请告诉我。

3K30

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

包括两个方面,一方面是写快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部处理步骤进行了程序优化,使用多线程,甚至很多函数是使用C写,大大加快数据运行速度。...因此,在对大数据处理上,使用data.table无疑具有极高效率。这里主要介绍在基因组数据分析可能会用到函数。...; na.strings 对NA解释; file 文件路径,再确保没有执行shell命令时很有用,也可以在input参数输入; stringsASFactors 是否转化字符串因子...; verbose 是否交互和报告运行时间; autostart 机器可读这个区域任何行号,默认1L,如果这行是空,就读下一行; skip 跳过读取行数,1则从第二行开始读,...; nomatch 不匹配时返回值,强制转化整型 好了,写到这里写都有点累了,再介绍最后一个函数,有时候我们需要了解你写这个脚本运行所花费时间,这个时候保存开始运行时间和结束运行时间

3.2K10

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

接「R」数据操作(一)和「R」数据操作(二) 使用data.table包操作数据 data.table包提供了一个加强版data.frame,它运行效率极高,而且能够处理适合内存大数据集,它使用[]...例如,使用setkey()将id设置product_info一个键: setkey(product_info, id) 同样函数无任何返回,但我们已经原始数据设置了键,而且原来数据看起来也没变化...TRUE 也可以使用setkeyv()设置键,但它只接受字符向量: setkeyv(product_stats, "id") 当key是一个动态变化向量时,这个函数会非常好用。...,by所对应组合值是唯一,虽然实现了目标,但结果没有设置键: key(type_class_test0) #> NULL 这种情况下,我们可以使用keyby确保结果data.table自动将...举例,我们定义一个函数,计算market_data由用户定义年度均值: average = function(column){ market_data[, .

5.9K20

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

首先,假设我一个这样数据集(暂且命名为t1): ? 现在我想做是对于每一行,找出非NA值,填充到“mean.scale”这个新变量;如果有多个非NA,那么就计算其平均值。...对,这个步骤和cast和melt函数作用类似,只不过这里直接用了data.table自己语句。...事实上,data.table也整合了reshapecast和melt函数,并且将cast函数升级dcast,感兴趣小伙伴可以去研究一番。 在拉直数据后,接下来要做工作就很简单了。...我们只要把数据按照fund_name分组,然后对每组求scale均值。唯一需要注意两点。首先,别忘了meanna.rm = T参数,它能够让函数忽略缺失值。...R数据处理哲学是向量,是列,但这并不妨碍我们按照行进行处理,其中关键,就在于运用 c() 函数把不同向量拼接成一个向量。 我是大猫,咱们下期见! 附:Stackoverflow原始问题 ?

1.3K20

R练习50题 - 第一期

写在前面 从这期开始,大猫课堂将会推出一个系列:R练习50题,目的是使用50道练习题让大家掌握常用数据操作,例如寻找每组最大N个观测等。...值得说明一下几点: 数据集“面板数据”:包含多个股票(横截面),而每个股票则有多个按照日期排序变量(时间序列) 股票代码symbol 和日期date共同组成了数据集key,也即每个唯一symbol...例如股票600128,如果它一共有100天观测,那么我们会出现100个重复结果。为了去重,我们需要借助于data.tableunique函数。 我们希望最终输出是一个字符串向量: ?...str_detect(symbol, "8")含义:对于symbol向量,判断其是否含有字符8,如果有,则为True,否则Faulse。 unique:找出symbol不重复值。...代码第二行生成了一个新变量num。由于在keyby语句中我们已经按照日期与涨跌进行了分组,所以这一步我们只需要统计每个组多少个股票就可以了。我们在这里使用了uniqueN这个函数

2.4K40

获取基因有效长度N种方法

需要注意一点是,在计算FPKM/RPKM和TPM时,基因长度一般指都是基因有效长度effective length,即该基因外显子总长度或转录本总长度,以此为标准消除测序造成基因长度影响才更为准确...) #可多核读取文件 a1 <- fread('counts.txt', header = T, data.table = F)#载入counts,第一列设置列名 ### counts矩阵构建...注意,由于每个样本基因EffectiveLength差异,我们要提取实际EffectiveLength矩阵(或者可以每行EffectiveLength取均值)。...library(tximport) #t2s从gtf文件中提取transcript_id和symbol对应关系文件 t2s <- fread("t2s_vm29_gencode.txt", data.table...首先看看从gtf文件获取基因有效长度两种方法是否差异。

4.3K11

生信技能树 Day8 9 GEO数据挖掘 基因芯片数据

(1)提取表达矩阵exp exp <- exprs(eSet) # exprs 提取数据函数 dim(exp) # 多少行多少列 range(exp) # 看数据范围决定是否需要log,是否负值,异常值...)提取表达矩阵exp > exp <- exprs(eSet) > dim(exp) [1] 54675 20 > range(exp)#看数据范围决定是否需要log,是否负值,异常值 [1]...p) { s = intersect(rownames(pd),colnames(exp)) exp = exp[,s] pd = pd[s,] } 多个分组,怎么提取两个分组 #现编一个三分组...acc=GPL570 代码下载 #获取表格下载链接 get_gpl_txt(gpl_number) 如何读取表格并提取子集,以GPL28098例 #读取表格 a = data.table::fread...singleDoc# 《一个有点难探针注释》 包含在ENTREZ_GENE_ID library(tinyarray) find_anno("GPL30971") get_gpl_txt("GPL30971

13620

For循环与向量化(Vectorization)

现在我们希望针对每个计算当期增长率,其公式如下: 大家可能首先想到是利用For循环做。假如一个向量长度,那么我们就把上面的增长率公式应用遍。这种思路以标量(scalar)角度考虑问题。...这样是否真的有效率?除此之外,能否其他思路? ” 解决方法 For循环 首先我们用R语言最底层For循环进行函数编写。...我们定义向量长度10000,重复运行1000次,测定计算其运行中位数时长(为了防止极值对结果影响)。...由于我们需要做是向量一个元素与前一个元素处理结果,那么只需要将元素往后进行移位,与原来向量进行一一对应处理即可,这样便达到了以向量进行处理模式。...当遇到一些特殊情况,比如函数嵌套调用过多,或者数据迭代问题,对更为底层语言进行调用,则会显得更为有效

1.7K30

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

同时设置两个key变量方式,也是可以。 查看数据集是否key方式: key(data) #检查该数据集key是什么?...haskey(data) #检查是否Key attributes(data) key()可以告诉你,数据集中Key是哪几个变量?...data.table,还有一个比较特立独行函数: 使用:=引用来添加或更新一列(参考:R语言data.table速查手册) DT[, c("V1","V2") := list(round(exp(V1...这里一个重要点:使用”==”操作符,那么它会扫描整个数组,虽然data.table用这种方法也可以提取,但很慢,要尽量避免。...%>%功能是用于实现将一个函数输出传递给下一个函数一个参数。注意这里,传递给下一个函数一个参数,然后就不用写第一个参数了。在dplyr分组求和过程,还是挺有用

7.3K43

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

在实际使用,data.talbe::fread()读取速度可以比原生read.csv3-10倍提升速度。...当然你可以用它做简单爬虫应用,如果需要更高级爬虫,我们需要投入rvest怀抱支持诸如xpath等高级爬虫特性。 3. DBI DBI是一个R与数据库通讯数据库接口。...此外,purrr引入了静态类型,解决原生apply函数族类型系统不稳定情况。 我遇到过一个非常头疼apply函数问题:apply内表达式计算结果不一致。...DataFrame优化 1. data.table 众所周知,data.frame几个缺点: (1)大数据集打印缓慢 (2)内部搜索缓慢 (3)语法复杂 (4)缺乏内部聚合操作 针对这几个问题,data.table...data.table还参考了NoSQL中流行Key-Value形式,引入了setkey()函数,数据框设置关键字索引。

3.8K120

A股动态多因子模型实践

其中图5是对因子IC序列进行自回归测试结果,43个因子IC自回归系数正。其中图6表示因子收益(每个因子多空组合收益)自回归测试结果,47个因子自回归系数正。...这是由于因子拥挤造成因子拥挤度可以通过一个因子横截面重要性与历史重要性滚动平均值相对值评估。由于因子库包含具有相似特征因子,因此在测量因子拥挤度时可以将它们分组到不同聚类。...尽管单因子不稳定,但每组总有有效因子,说明在模型要考虑每组因子分散性。 因子很有可能由于因子拥挤而衰减,说明因子拥挤可以用在因子权重配比。...如果这一步选出因子,再在这组剩下因子,选择一个IC最高,此时这组两个因子进入下一步。 最终确保每组都至少有2个(或者4个)因子进入下一步。...Model3与Model2区别是因子选择是每年滚动选取,也是基于ICIR绝对值排序每组选取两个因子。 Model4是一个动态因子模型,在每一组,每个月选取上一期因子IC最大两个因子

1.3K20

开放地址法散列开放地址法代码实现

开放地址法 开放地址法是另一种(相对于分离链接法)解决散列冲突方法。适用于装填因子(散列表中元素个数和散列表长度比)较小(小于0.5)散列表。...开放地址法索引计算方法$$h_{i}(x) = (Hash(X) + F(i)) % TableSize$$,其中: Hash(x)索引计算方法 F(i)冲突解决函数F(0) = 0,...i已经尝试计算索引次数 F(i)一般: 线性探测法:$$F(i) = i$$,即每次冲突则向下寻找1个位置,直到找到不冲突位置,容易产生“一次聚集”现象(数据集中在某一个地址区域) 平方探测法...:$$F(i)=i^{2}$$,每次冲突按平方寻找下一个位置,直到找到不冲突位置 双散列:$$F(i) = i\cdot hash_{2}(x)$$,即发生冲突后使用第二个散列函数计算下一个位置 代码实现...// 节点数据 type tableData struct { data int } // 节点 type tableNode struct { flag bool //是否已经插入数据

1.3K120

栾生老师 || 线性混合效应模型教程

★邓飞注:原始数据下载链接,https://luansheng.netlify.com/post/datasets/shrimp.csv ” 推荐使用Rstudio运行R,依赖R包data.table...其中参数sep表示文件是用逗号分割,header表示数据文件第一行是列名,stringsAsFactors表示读入数据,对于字符类型,是否自动处理因子类型。...为了方便后边模型处理,这里设置因子类型。 str()函数可以对数据集一个汇总。...P值是否小于0.05或者0.001,已经成为文章结果是否可靠,是否能够发表一个重要标志。但是,p值一定程度上就像SCI论文影响因子,有点滥用味道。...这反过来表明,性别影响了对虾体重,雌雄虾体重是差别的,也就是说统计上是显著。 需要注意另外一个问题是,模型所有效显著性(最底部)与系数列表单个效应显著性还是存在差别的。

7.3K97

泛癌水平批量生存分析

所以通常很少看比例,而是看各个细胞亚群标记基因组成特征基因集是否特殊生物学意义,比如生存分析统计学显著。...然后研究者拿这些基因集去TCGA数据库里面检验它们是否在各个癌症里面可以统计学显著区分生存,而且判定它们是保护因子还是风险因子。...接下来就可以挑选C0和C10以及C13这3个单细胞亚群,展现它们特异性高表达量基因集,根据log2FC排序: 其实C10和C13其实主要是细胞周期基因比如TOP2A和CDK1等等,它必然是肿瘤风险因子啦...: # pan-cancer官网自带一个免疫细胞比例 library(data.table) cib = fread('TCGA.Kallisto.fullIDs.cibersort.relative.tsv...])/(fit$obs[2]/fit$exp[2]) return(c(p.val,HR)) } }) return(sur_list) } 所以我们可以对全部免疫细胞比例独立运行上面的函数

1.4K21

10行代码搞定【滚动回归】

如果数据一共有N天,那么就会得到N - n个数据点 这就是滚动回归,一个非常容易理解而且在研究中常常遇见,然而实现起来却不是那么容易问题。在今天大猫课堂,大猫教大家用10行代码搞定它!...为此我们构造样例数据集,我们假设一共有5个不同组,每组都由1000天观测,包含自变量x与因变量y。此外,我们假设窗口期 n = 100 天。 图:样例数据集 ?...需要注意是我们需要遍历每一个符合条件t,以及需要把最终结果输出成一个漂亮数据集。 步 骤分解 大猫先把代码放上来: # 设定滚动窗口期,这里100天 n <- 100 # 计算滚动回归!...此处每个idn = 1000天观测,由于窗口期100天,因此最终每个id会有1000 - 100 = 900个回归结果 keyby语句将原数据集按照id进行分组,具体作用可以看上期《一行代码搞定分组回归...但是,这个滚动回归代码也不是完美的,最大劣势就在于我们滚动窗口是用“期”而不是用“天”定义,也就是说,程序在每次滚动时候都会固定找前面n期观测,而不管这n期之间可能间隔是10天,20天还是一个

2.1K20
领券