写在前面 从这期开始,大猫课堂将会推出一个新的系列:R练习50题,目的是使用50道练习题让大家掌握常用的数据操作,例如寻找每组最大的N个观测等。...我们的所有答案都将使用data.table这个包。我们认为data.table是最优秀的数据处理工具,没有之一。...在data.table的语法中,先进行列选择操作,再对列进行处理。所以上述语句会先执行str_detect,再执行unique。 练习2:每天上涨和下跌的股票各有多少?...这是因为data.table的第一个语句用来对列进行选择,由于我们这里需要对所有列进行统计,所以不需要进行任何操作。 keyby用来进行分组,是整个代码的核心。先来看keyby = ....其中,updown是我们新建的字符变量,用来表示分组,它只取两个值:UP, DOWN。这其中的难点是建立updown这个变量。我们使用了ifelse这个函数。
由于股票代码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这个变量。
# install.packages('R.utils') rm(list=ls()) options(stringsAsFactors = F) library(Seurat) library(ggplot2...) library(clustree) library(cowplot) library(dplyr) library(data.table) library(stringr) #install.packages...MGH_HNSCC_cell_annotation.txt.gz") colnames(cell) meta2 % column_to_rownames("sample_barcode") ###两种方法可以添加细胞亚群信息...,文章中给出的subclustering那列 # sce_obj <- CreateSeuratObject(counts = seurat_combined@assays$RNA$counts, #...group.by = "subclustering",label = T) #####去除NA部分的亚群####### table(sce.all$subclustering) ###给亚群中赋值
#把R包里的注释表格变成数据框}# 方法2 读取GPL网页的表格文件,按列取子集##https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?...::fread("GPL570-55999.txt",data.table=F, skip=17) colnames(b) #下一行代码里的列名是从colnames(b)...str_detect(ids2$symbol,"///");table(k2) ids2 = ids2[ k1 & k2,] # ids = ids2 #使用方法二需要将42行F改为T,55行取消注释...step1output.Rdata")# 1.Group----library(stringr)# 标准流程代码是二分组,多分组数据的分析后面另讲# 生成Group向量的三种常规方法,三选一,选谁就把第几个逻辑值写成T,另外两个为..."Disease","Normal"),each = 10)}else if(T){ # 第三种方法,使用字符串处理的函数获取分组 k = str_detect(pd$title,"Control"
众所周知,当我们利用R语言处理大型数据集时,for循环语句的运算效率非常低。有许多种方法可以提升你的代码运算效率,但或许你更想了解运算效率能得到多大的提升。...逐行判断该数据框(df)的总和是否大于4,如果该条件满足,则对应的新变量数值为’greaterthan4’,否则赋值为’lesserthan4’。 ?...4.尽可能地使用 ifelse()语句 利用ifelse()语句可以使你的代码更加简便。ifelse()的句法格式类似于if()函数,但其运算速度却有了巨大的提升。...即使是在没有预设数据结构且没有简化条件语句的情况下,其运算效率仍高于上述的两种方法。 ? 5.使用 which()语句 利用which()语句来筛选数据集,我们可以达到Rcpp三分之一的运算速率。...11.利用内存较小的数据结构 data.table()是一个很好的例子,因为它可以减少数据的内存,这有助于加快运算速率。 ?
最近粉丝提问她在使用一个叫做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包的源代码。不过,无所谓啊, 让他们两个包互相适应就好了。
一 载入R包,数据 1 ,载入必要的R包 #remotes::install_github("Japrin/sscVis") library("sscVis") library("data.table"...(p.value,"BH")] return(count.dist.melt.ext.tb) } 该分析只需要 分组信息 和 cluster/celltype结果 ,也就是meta.data 中的两列信息...4,可视化 函数默认使用sscVis::plotMatrix.simple绘制,热图中没有P值的结果。...col <- viridis(11,option = "D") b = ifelse(b >= 0.05&(a>1.5|a<0.5), "", ifelse(b1.5|a<0.5),"****", ifelse(b1.5|a<0.5),"***", ifelse
转载于36大数据,原文作者:Selva Prabhakaran 译者:fibears 众所周知,当我们利用R语言处理大型数据集时,for循环语句的运算效率非常低。...4.尽可能地使用 ifelse()语句 利用ifelse()语句可以使你的代码更加简便。ifelse()的句法格式类似于if()函数,但其运算速度却有了巨大的提升。...即使是在没有预设数据结构且没有简化条件语句的情况下,其运算效率仍高于上述的两种方法。 ?...5.使用 which()语句 利用which()语句来筛选数据集,我们可以达到Rcpp三分之一的运算速率。 ?...11.利用内存较小的数据结构 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的方式来删除列。...在筛选列变量的数据,也可以与%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高效数据处理包
,getGPL = F) eSet = eSet[[1]] exp = exprs(eSet) pd = pData(eSet) 3.表达矩阵行名ID转换 dat = data.table::fread...("GSE162550_gene_sample_count_with_symbol (3).xls.gz",data.table = F) k = dat$Symbol!...save(exp,Group,proj,file = paste0(proj,".Rdata")) 7.三大R包差异分析 rm(list = ls()) load("DHA.Rdata") table...<- as.data.frame(res) DEG1 <- DEG1[order(DEG1$pvalue),] DEG1 = na.omit(DEG1) head(DEG1) #添加change列标记基因上调下调...(k1,"DOWN",ifelse(k2,"UP","NOT")) table(DEG3$change) head(DEG3) tj = data.frame(deseq2 = as.integer(
[, 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,则简直是一阵春风: ?
R包安装:options("repos" = c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))if(!...三大R包差异分析输入数据都是count矩阵和对应的分组信息。...###参数是一个数据框,对他的行名取子集,取出change列是UP的行名。###三个R包差异分析结果都有统一的change列,所以可以用相同的函数取子集。...成一簇:说明画热图的基因在两个分组间有明显的表达模式;不成一簇:说明画热图的基因在两个分组间表达模式不是特别明显;换一组基因或者增删基因,可能改变聚类的结果。...分组和聚类是两件独立的事情,聚类以样本为单位,而不是以分组为单位,每个样本属于那个分组的信息是已知的。
合理选择一套自己的数据处理工具组合算是挺艰难的选择,因为这个涉及到使用习惯和迁移成本的问题,比如你先熟知了R语言的基础绘图系统,在没有强大的驱动力的情况下,你可能不太愿意画大把时间去研究ggplot2,...data.table列索引 列索引与数据框相比操作体验差异比较大,data.table的列索引摒弃了data.frame时代的向量化参数,而使用list参数进行列索引。...列索引的位置不仅支持列名索引,可以直接支持内建函数操作。 mydata[,.(flight/1000,carrier,tailnum)] 支持直接在列索引位置新建列,赋值符号为:=。...注意以上新建列时,如果只有一列,列名比较自由,写成字符串或者变量都可以,但是新建多列,必须严格按照左侧列名为字符串向量,右侧为列表的模式,当然你也可以使用第二种写法。...当聚合函数与data.table中的分组参数一起使用时,data.table的真正威力才逐渐显露。 mydata[,.
: R语言的综合运用内容较多,所以我将其分为两篇文章进行讲解。第一篇笔记先学习目录的前三个知识✊ 一、玩转字符串 字符串的学习要点在下方: 1、字符串长度 先上图,大家会不会觉得疑惑?...* Sepal.Width):这段代码使用了mutate函数,将test数据集中新增一个名为new的列,该列的值为Sepal.Length×Sepal.Width。...答案:6列,代码运行的结果赋值给test了 所以经典名言第三次出现了,大家熟记于心?...select函数从iris数据集中选择了除了第5列(即最后一列)之外的所有列,然后将结果转换成矩阵(as.matrix),接着再选出前50行(head函数),最后使用pheatmap包中的pheatmap...引用自生信技能树——小洁老师
第一节打开RStudio先运行以下代码library(GEOquery)library(dplyr)library(tidyverse)library(data.table)1.R包的安装1.install.packages...<- anno[,c("ID","Gene Symbol")] #部分探针对应的基因名有两个(如"DDR1 /// MIR4640" ),将排在后面的去掉symbol <- ID_symbol$`Gene...gene_symbol)rm(ID_symbol,symbol,symbol1,gene_symbol)4.将表达矩阵与基因名合并exp <- as.data.frame(exp)#merge函数只对两个...=T,pval=T,risk.table = T,#conf.int=T表示加上95%置信区间,添加风险因子表 surv.median.line = "hv")#添加中位生存时间#使用...group_list)rownames(design) <- colnames(exp5)fit <- lmFit(exp5,design)#构建线性拟合模型fit <- eBayes(fit)#eBayes()使用
版权声明:本文为博主原创文章,转载请注明出处 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
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 箱线图的应用单个基因在两组之间表达量的差异可视化。分组信息:是一个有重复值的离散型的向量,分组向量的元素和表达矩阵的列是一一对应的。
的部分函数在使用的过程中会直接对原来的数据进行改写,为了防止原来的数据被改变,使用拷贝的文件。...banana 4 1 3 5: orange 5 3 3 6: orange 6 6 3 替换时可以增加条件语句 > dt[, c := ifelse...banana 3 6 5: 2 0 expensive orange 5 3 6: 2 1 expensive orange 6 6 同时增加两个及以上的列...(b = y, c > z)] a b c x 1: 3 b 4 3 2: 1 c 5 2 3: NA a 8 1 bind组合两个data.table ?...overlap,使用y作为索引去x中寻找有overlap的情况 > x = data.table(chr=c("Chr1", "Chr1", "Chr2", "Chr2", "Chr2"), +
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和自定义函数
但是,一直有个缺点,如果需要计算的量比较大时,就不方便了,去搜了一下文献,发现了一个最近发表的R包,不仅可以计算反转录的RNA体积,还可以帮助选择定量方法,简直是神仙R包,本期就介绍一下它的使用吧。...感谢原作者的开发,嘿嘿,文末有引用方法。...这里我们的df.2文件至少要包含一个all的列,告诉R具体的反应体积。...::fread(df1.path) head(cq.table) ---- curve.table为标准曲线,可以通过前面介绍的方法计算得出。...如何引用: Li X, Wang Y, Li J, Mei X, Liu Y, Huang H. qPCRtools: An R package for qPCR data processing and
领取专属 10元无门槛券
手把手带您无忧上云