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

R练习50题 - 第一期

写在前面 从这期开始,大猫课堂将会推出一个新的系列:R练习50题,目的是使用50道练习题让大家掌握常用的数据操作,例如寻找每组最大的N个观测等。...我们的所有答案都将使用data.table这个包。我们认为data.table是最优秀的数据处理工具,没有之一。...在data.table的语法中,先进行列选择操作,再对进行处理。所以上述语句会先执行str_detect,再执行unique。 练习2:每天上涨和下跌的股票各有多少?...这是因为data.table的第一个语句用来对进行选择,由于我们这里需要对所有进行统计,所以不需要进行任何操作。 keyby用来进行分组,是整个代码的核心。先来看keyby = ....其中,updown是我们新建的字符变量,用来表示分组,它只取个值:UP, DOWN。这其中的难点是建立updown这个变量。我们使用ifelse这个函数。

2.4K40

R练习50题 - 第二期

由于股票代码symbol的最后个字符表示交易所(例如,600123.SH表示上海交易所,股票代码600123),我们在建立分组变量时需要使用str_sub函数截取最后个字符。 代码及解析: ?...为了选出沪深300成分股,我们使用了index_w300 > 0这个语句。...index_w300是一个数值变量,与零进行比较运算后会生成一与原向量等长的布尔向量(例如 c(True, False False, True...))。...data.table只会选择为True的那些元素。 在data.table的dt[i, j, by]语法中,先执行行选择操作i, 再执行分组操作by, 最后执行列操作j。...注意以上运算的结果是一个取值为True或False的向量,data.table最终会挑选出为True的那些行。 我们仍旧使用ifelse函数生成updown这个变量。

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

提升R代码运算效率的11个实用方法

众所周知,当我们利用R语言处理大型数据集时,for循环语句的运算效率非常低。有许多种方法可以提升你的代码运算效率,但或许你更想了解运算效率能得到多大的提升。...逐行判断该数据框(df)的总和是否大于4,如果该条件满足,则对应的新变量数值为’greaterthan4’,否则赋值为’lesserthan4’。 ?...4.尽可能地使用 ifelse()语句 利用ifelse()语句可以使你的代码更加简便。ifelse()的句法格式类似于if()函数,但其运算速度却有了巨大的提升。...即使是在没有预设数据结构且没有简化条件语句的情况下,其运算效率仍高于上述的种方法。 ? 5.使用 which()语句 利用which()语句来筛选数据集,我们可以达到Rcpp三分之一的运算速率。...11.利用内存较小的数据结构 data.table()是一个很好的例子,因为它可以减少数据的内存,这有助于加快运算速率。 ?

1.5K80

使用R包的内置数据不能通过个冒号吗?

最近粉丝提问她在使用一个叫做pbcmc的R包的时候,遇到了如下所示的错误: 'pam50' is not an exported object from 'namespace:genefu' 也就是说...,这个pbcmc居然去责怪了 genefu 包,R包的地址: https://bioconductor.riken.jp/packages/3.3/bioc/html/pbcmc.html https...://bioconductor.org/packages/release/bioc/html/genefu.html 我去查看了叫做pbcmc的R包的源代码,发现里面大量使用个冒号的语法: grep...而且是可以使用的: 重新安装和加载源代码包 是不是超级简单啊,这个debug过程。...本来呢,我其实是应该去修改 genefu 这个包,让它 export里面的pam50这个数据,而不是修改 pbcmc的R包的源代码。不过,无所谓啊, 让他们个包互相适应就好了。

83720

提升R代码运算效率的11个实用方法——并行、效率

转载于36大数据,原文作者:Selva Prabhakaran 译者:fibears 众所周知,当我们利用R语言处理大型数据集时,for循环语句的运算效率非常低。...4.尽可能地使用 ifelse()语句 利用ifelse()语句可以使你的代码更加简便。ifelse()的句法格式类似于if()函数,但其运算速度却有了巨大的提升。...即使是在没有预设数据结构且没有简化条件语句的情况下,其运算效率仍高于上述的种方法。 ?...5.使用 which()语句 利用which()语句来筛选数据集,我们可以达到Rcpp三分之一的运算速率。 ?...11.利用内存较小的数据结构 data.table()是一个很好的例子,因为它可以减少数据的内存,这有助于加快运算速率。 ?

1K50

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

data.table中,还有一个比较特立独行的函数: 使用:=引用来添加或更新一(参考:R语言data.table速查手册) DT[, c("V1","V2") := list(round(exp(V1...),2), LETTERS[4:6])] DT[, c("V1","V2") := NULL] 通过list的方式来更新了数据,以及使用null的方式来删除。...在筛选变量的数据,也可以与%in%集合运算联用(集合运算见博客:R语言︱集合运算)。...2016-11-28补充: 留言区大神给了一个比较好的选中的方式,其中主要就是对with的使用data.table时,可以用data[,1,with=FALSE]取data的第一...参考文献: 些许案例,代码参考自以下博客,感谢你们的辛勤: 1、R语言data.table简介 2、超高性能数据处理包data.table 3、R语言data.table速查手册 4、R高效数据处理包

7.6K43

Matt Dowle 演讲节选(二)

[, v1 := i] # 1 s 上面行代码做的都是同一件事:把变量v1从第1行到第1000行的值分别设置为1至1000。...这里的关键在于,在第一种方法中,每为新的一行赋值data.table就要重新复制一遍DT,也就是说,第一种方法的运行过程中,DF被复制了1000遍!...因为任何对的处理都必须导致数据集在内存中的复制,也即假如我们的内存是 4G,那么在使用data.frame的情况下,我们最大就只能处理 2G 的数据集!...data.table带来的不仅是全新的、人性化的语法,更是无可匹敌的性能。在演讲中,Matt 引用了一个在 StackOverflow 论坛中的真实例子。...这个用户一开始使用lapply和do.call函数,不仅计算时间很长(30 min!),而且代码特别难看: ? 而使用data.table,则简直是一阵春风: ?

1.1K40

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

合理选择一套自己的数据处理工具组合算是挺艰难的选择,因为这个涉及到使用习惯和迁移成本的问题,比如你先熟知了R语言的基础绘图系统,在没有强大的驱动力的情况下,你可能不太愿意画大把时间去研究ggplot2,...data.table索引 索引与数据框相比操作体验差异比较大,data.table索引摒弃了data.frame时代的向量化参数,而使用list参数进行列索引。...索引的位置不仅支持列名索引,可以直接支持内建函数操作。 mydata[,.(flight/1000,carrier,tailnum)] 支持直接在索引位置新建赋值符号为:=。...注意以上新建时,如果只有一,列名比较自由,写成字符串或者变量都可以,但是新建多,必须严格按照左侧列名为字符串向量,右侧为列表的模式,当然你也可以使用第二种写法。...当聚合函数与data.table中的分组参数一起使用时,data.table的真正威力才逐渐显露。 mydata[,.

3.6K80

阿榜的生信笔记7—R语言的综合运用1

R语言的综合运用内容较多,所以我将其分为篇文章进行讲解。第一篇笔记先学习目录的前三个知识✊ 一、玩转字符串 字符串的学习要点在下方: 1、字符串长度 先上图,大家会不会觉得疑惑?...* Sepal.Width):这段代码使用了mutate函数,将test数据集中新增一个名为new的,该的值为Sepal.Length×Sepal.Width。...答案:6,代码运行的结果赋值给test了 所以经典名言第三次出现了,大家熟记于心?...select函数从iris数据集中选择了除了第5(即最后一)之外的所有,然后将结果转换成矩阵(as.matrix),接着再选出前50行(head函数),最后使用pheatmap包中的pheatmap...引用自生信技能树——小洁老师

64300

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

版权声明:本文为博主原创文章,转载请注明出处 R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快。...包括个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部处理的步骤进行了程序上的优化,使用多线程,甚至很多函数是使用C写的,大大加快数据运行速度。...因此,在对大数据处理上,使用data.table无疑具有极高的效率。这里主要介绍在基因组数据分析中可能会用到的函数。...by.y默认key(y); maxgap 设定个区域空白区允许的最大值,参数尚不能使用; minoverlap 设定个区域最小的重叠区,参数尚不能使用; type...manual: https://cran.r-project.org/web/packages/data.table/data.table.pdf

3.3K10

生信入门马拉松之R语言基础-脚本项目管理、条件循环、表达矩阵和一丢丢数据挖掘(Day 7)

R语言基础学习笔记-Day71. 复习R包stringr字符串操作的几个函数-长度、拆分、提取、字符检测、替换和删除。...变量,自带变量名称,不需要再次赋值,也没有参数。undefined表格文件需要赋值,读取参数不同导致读取结果不同,不能在后续代码中同等处理。...加载test1.Rdata,将个数据框按照probe_id连接在一起,按共同取交集load("test1.Rdata")library(dplyr)merge1 <- merge(dat,ids,...生信实战中R语言的几个重点函数【小洁老师语录】编程能力,就是解决问题的能力,也是变优秀的能力R语言基础入门课程-到此结束7. 数据挖掘生信技能树小洁老师7.1 为什么数据挖掘?...7.5.3 箱线图的应用单个基因在组之间表达量的差异可视化。分组信息:是一个有重复值的离散型的向量,分组向量的元素和表达矩阵的是一一对应的。

13000

R语言入门到可视化精选19题

R-gui桌面也提供手动更改工作空间的选项,具体点击“文件” ? 练习5:帮助函数-"help(函数名/包名)"或"??函数名/包名" 提示:通过help(函数名/包名)或"??...简单数据操作 练习8:数据引用(类似excel选择行/) 要求:行列引用、值引用、取子集 提示:参考《R语言快速入门:数据结构+生成数据+数据引用+读取外部数据》 ?...练习9:创建新变量、重命名、数据类型转换 要求:赋值(变量名<-表达式)、names()函数、as.datatype()函数 提示:参考《R语言实战》-4....要求:常用summary,另可了解str( ) 提示:通过帮助函数查看使用说明,help(str) ?...练习16:关于控制流-重复和循环 入门要求:了解基本控制流-for结构、while结构、if-else结构、ifelse结构、…… 提示:参考《R语言 控制流:for、while、ifelse和自定义函数

79942
领券