unique:找出symbol中不重复的值。 在data.table的语法中,先进行列选择操作,再对列进行处理。所以上述语句会先执行str_detect,再执行unique。...(date, updown = ifelse(close - pre_close > 0, "UP", "DOWN"))] 代码第一行只有一个逗号。...这是因为data.table的第一个语句用来对列进行选择,由于我们这里需要对所有列进行统计,所以不需要进行任何操作。 keyby用来进行分组,是整个代码的核心。先来看keyby = ....代码第二行生成了一个新变量num。由于在keyby语句中我们已经按照日期与涨跌进行了分组,所以这一步我们只需要统计每个组有多少个股票就可以了。我们在这里使用了uniqueN这个函数。...整个代码的执行顺序是:先选择行(逗号空白行),再分组(keyby语句),最后进行组间统计(num语句)。 我们的答案中,行、列以及分组三条语句各占一行,实际上这仅仅是为了让代码更直观。
可以看到这个数据集pd中是不包含分组信息(HPV阳性和阴性)的。在网页中找到分组信息,如下。可以看到分组信息对应的ID号是pd表格中title列中内容的后面的数字。...我采用的方法是直接复制上表内容,形成sup.tsv,然后读取到R中,按照ID值从小到大排列。...处理pd的title列,将"UNC HNSCC01-0394"、 "UNC HNSCC02-0387"等的“-”去掉,再按照title列内容后面的数字,如010394、020387等进行从小到大排列。...可以看到现在sup.tsv和pd的行顺序是一致了,然后直接将sup.tsv的HPV列加到pd中即可。...)tmp data.table = F)tmp_sorted 行顺序pd$row_order <- 1
#把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)...p) { s = intersect(rownames(pd),colnames(exp)) exp = exp[,s] pd = pd[s,]}#(4)提取芯片平台编号,后面要根据它来找探针注释...如果三种办法都不适用,可以继续往后写else ifif(F){ # 第一种方法,有现成的可以用来分组的列 }else if(F){ # 第二种方法,眼睛数,自己生成 Group = rep(c(...(k,"control","vem")}###rep(c("T","N"),time=c(3,5))# 需要把Group转换成因子,并设置参考水平,指定levels,对照组在前,处理组在后Group =
专题1—文章复现—bulkRNA转录组结合机器学习等进行相关疾病研究01—多数据集去除批次效应后联合分析以及火山图标准绘制今天给大家复现一篇bulkRNA转录组结合机器学习等进行相关疾病研究的文章《Identification...(dat)=ids$symbol#把ids的symbol这一列中的每一行给dat作为dat的行名 dat[1:4,1:4] #保留每个基因ID第一次出现的信息}save(gse_number,dat...GSE87473 , GSE92415的GPL平台是GPL13158,不能通过ids=idmap( a@annotation ,'soft')函数直接获取,应该去GEO网站上找到对应的文件下载导入到R中...(dat)=ids$symbol#把ids的symbol这一列中的每一行给dat作为dat的行名 dat[1:4,1:4] #保留每个基因ID第一次出现的信息} save(gse_number,dat...(dat)=ids$symbol#把ids的symbol这一列中的每一行给dat作为dat的行名 dat[1:4,1:4] #保留每个基因ID第一次出现的信息} save(gse_number,dat
相间、两组的数量不同?...) #把R包里的注释表格变成数据框 } 方法2 读取GPL网页的表格文件,按列取子集 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?...("GPL28098.txt",data.table = F) # 提示丢了一行,所以换个读取函数 b = read.delim("GPL28098.txt",check.names = F,skip...") #网址复制到浏览器 下载到文件,放在工作目录下 f = data.table::fread("GPL30971.txt",data.table = F) colnames(f) ids = f[,...show_colnames =F, show_rownames = F, annotation_col=annotation_col, scale = "row", #按行标准化
练习 4 沪深300成分股中,每天上涨、下跌的股票各有多少? 分析: 本题仍旧是Ex-2的拓展,只不过要求我们进行行选择操作。在data.table的dt[i,j,by]语法中,i代表行选择操作。...data.table只会选择为True的那些元素。 在data.table的dt[i, j, by]语法中,先执行行选择操作i, 再执行分组操作by, 最后执行列操作j。...分析: 这一题的关键思路还是Ex-2中的分组。首先,我们自然要对日期分组,然后按照updown进行分组。...为了方便计算,我们首先在原数据集中新增一个变量ret,表示股票的日收益率。'...注意以上运算的结果是一个取值为True或False的向量,data.table最终会挑选出为True的那些行。 我们仍旧使用ifelse函数生成updown这个变量。
R语言︱数据集分组 大型数据集通常是高度结构化的,结构使得我们可以按不同的方式分组,有时候我们需要关注单个组的数据片断,有时需要聚合不同组内的信息,并相互比较。...介绍一种按照日期范围——例如按照周、月、季度或者年——对其进行分组的超简便处理方式:R语言的cut()函数。...5.计算结果需要大幅加工,很不方便。可以看到,计算结果中的第一列实际上是“SELLERID.CLIENT”,我们需要把它拆分成两列并调换顺序才行。...(参考来源:R高效数据处理包dplyr和data.table,你选哪个?) ?...data.table包提供了一个非常简洁的通用格式:DT[i,j,by],可以理解为:对于数据集DT,选取子集行i,通过by分组计算j。
学徒笔记分享 接到曾老师作业后,我兴高采烈的打开GEO网站搜索GSE代号,粗略看一下分组后,打开R语言,想直接用代码下载数据。一顿操作. ? 竟然无法读取数据?? ?...我们下载下来后解压缩,发现里面有2组数据,一组是count.txt文件,还有一组是fpkm文件 ?...library(stringr) #设置group group_list=ifelse( str_detect(pd1$group,"WT"),"WT",ifelse(str_detect(pd1$group...load(file = "h2.Rdata") library(RColorBrewer) #热图 cg=names(tail(sort(apply(rdathp,1,sd)),500))#apply按行...('1'是按行取,'2'是按列取)取每一行的方差,从小到大排序,取最大的500行 n=rdathp[cg,] #形成一个新的矩阵,只有那排名500的基因 #绘制热图 annotation_col
本文中所有的计算都在配置了2.6Ghz处理器和8GB内存的MAC OS X中运行。...6.利用apply族函数来替代for循环语句 本部分将利用apply()函数来计算上文所提到的案例,并将其与向量化的循环语句进行对比。...接下来我们将利用Rcpp来实现该运算过程,并将其与ifelse()进行比较。 ? 下面是利用C++语言编写的函数代码,将其保存为“MyFunc.cpp”并利用sourceCpp进行调用。 ?...10.尽早地移除变量并恢复内存容量 在进行冗长的循环计算前,尽早地将不需要的变量移除掉。在每次循环迭代运算结束时利用gc()函数恢复内存也可以提升运算速率。...,857142.9行每秒 ifelse:1752X,1500000行每秒 which:8806X,7540364行每秒 Rcpp:13476X,11538462行每秒 文|Selva Prabhakaran
❞ 关注下方公众号下回更新不迷路 加载R包 library(data.table) library(tidyverse) library(ggforce) library(ggtext) library...(detectors$native == "Yes", TRUE, FALSE) # 对数据进行聚合,按'detector'、'kind'、和'.pred_class'列组合,并计算每个组合的计数 df...$.pred_class) df = df |> split(df$class) # 根据'class'列将'df'数据框分割成多个子数据框 # 对每个子数据框进行操作 packing <- lapply...(df, function(x) { # 按'detector'列对子数据框进行排序 x = x[order(detector)] # 从子数据框中提取'detector'和'N2'列,并保留唯一的行...+ x$`.pred_class` |> as.numeric() # 计算x数据框中每个元素的纵坐标,并存储在'y0'列中 x$r = out[index]$radius # 将x数据框中每个元素的半径信息存储在
目的:选出关键基因 / 风险分数计算)模型预测和评估(ROC曲线 / C-index)差异分析的起点: counts矩阵,行名是symbol-reads计数数据 拿不到count数据如何让做差异分析...其他来源的转录组数据和TCGA的转录组数据的差别?整理输入数据的过程不同,差异分析无差别。数据下载方式不同,是否是count矩阵,行名需要是基因名,分组信息如何获取。..." data.table = F)# 保留ensembl id ,行名转换exp = as.matrix(dat[,4:9])rownames(exp) = dat[,1]library(tinyarray...(k1,"DOWN",ifelse(k2,"UP","NOT"))head(DEG2)table(DEG2$change)limma#####limma做转录组差异分析,多了一步voom标准化。...###参数是一个数据框,对他的行名取子集,取出change列是UP的行名。###三个R包差异分析结果都有统一的change列,所以可以用相同的函数取子集。
转录组GSE157718_Tpm与Count差异分析的比较在尝试复现GSE157718数据集的时候,发现网站同时提供了表达矩阵tpm形式与count形式,因此分别用这两种形式进行基因差异与富集分析,再进行对比...1 以fread函数导入的数据形式为data.table,设置行名很麻烦,这里先转化为data.frame形式2 行名或(GeneID列)为ENTREZID,需要转化为SYMBOL3 归根结底是表达矩阵的形式需要行名为基因名...> 5 ES2 ES#> 6 ES3 ES以logFC_t = 2,pvalue_t = 0.05为阈值,以DEseq2,edgeR,limma三个R包分别进行差异分析...,最好再去交集进行富集分析的结果如下2 Tpm形式Tpm也可以勉强进行差异分析,但是只能取log后,用limma做差异分析fpkm、rpkm需先转换为Tpm形式,用limma做差异分析limma差异分析参考基于芯片的分析流程表达矩阵...(k1,"Down",ifelse(k2,"Up","Not")))#Down Not Up # 158 20605 175 table(deg$change)#> #> Down
i 进行操作 按条件选择行 、 =、%in%、!...dt[max(number),] d e c name money number 1: 2 1 expensive orange 6 6 选择或删除某列 对列进行计算...按相同的列内容进行data.table组合 ?...读取或写出文件 fread(".csv", select = c("a","b")) 读取.csv或.tsv格式的文件,可以选择特定列读取 fwrite(dt, ".csv") 输出R环境中名为...其他 nomatch = NULL 返回匹配得上的部分 setkey() 设置匹配索引 参数which = TRUE 是只返回两个数据框匹配情况的行号 参数mult = "first" 是返回x中第一次匹配上的行
在进行GSEA(基因集富集分析)之前,是否需要筛选统计学显著的差异基因,以及这一筛选过程对分析结果的影响,是许多研究者关心的问题。根据最新的研究和分析工具的使用经验,以下是一些关键点: 1....使用可视化工具辅助分析:为了更好地解释GSEA结果,建议使用可视化工具(如ROC曲线、分布图等)来评估基因集在不同样本组中的表现,而不仅仅是依赖于统计学指标。...研究者应根据具体的研究目标和数据特点,灵活选择分析方法,并综合考虑统计学显著性和生物学意义。.../codes/step2-check.R') 2、差异分析 这里三分组,我们就用 Cpt1a-KO vs baseline 做差异吧: rm(list = ls()) ## 魔幻操作,一键清空~...,但也有一些通路在两次分析中得到的结果截然相反,如通路 mmu04728:
我们的马拉松授课专注于表达量矩阵的数据处理技巧传授,包括表达量芯片,转录组 测序, 单细胞转录组,都是一脉相承的。每个知识点都有对应的练习题安排给学员来考验大家是否掌握差异分析和富集分析的精髓。...: datadata.table::fread("GSE273142_Processed_data.tab.gz", data.table = F)...27260_S11.rsem.genes.results 3.391863 JG-27261_S12.rsem.genes.results 2.561012 group_list=ifelse...(dat['DAPK3',]>3, 'control','case' ) 可以看到,分组确实是不一样的,我们根据DAPK3的表达量的分组理论上比作者在GEO数据库存储的分组信息更可靠...有了合理的分组,就可以进行合理的差异分析: 合理的差异分析
下面是学员的( GEO数据挖掘 )直播配套笔记 和生信技能树GEO转录组“GSE150392“分析类似,唯一区别就是在数据处理和ID转换这一环节略微有区别 1.数据下载 最方便的是xena。...,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!...仅保留在一半以上样本里表达的基因 exp = exp[apply(exp, 1, function(x) sum(x > 0) >= 0.5*ncol(exp)), ] nrow(exp) 5.分组信息获取 根据样本...save(exp,Group,proj,file = paste0(proj,".Rdata")) 7.三大R包差异分析 rm(list = ls()) load("DHA.Rdata") table
本文中所有的计算都在配置了2.6Ghz处理器和8GB内存的MAC OS X中运行。...6.利用apply族函数来替代for循环语句 本部分将利用apply()函数来计算上文所提到的案例,并将其与向量化的循环语句进行对比。...接下来我们将利用Rcpp来实现该运算过程,并将其与ifelse()进行比较。 ? 下面是利用C++语言编写的函数代码,将其保存为“MyFunc.cpp”并利用sourceCpp进行调用。 ?...10.尽早地移除变量并恢复内存容量 在进行冗长的循环计算前,尽早地将不需要的变量移除掉。在每次循环迭代运算结束时利用gc()函数恢复内存也可以提升运算速率。...,857142.9行每秒 ifelse:1752X,1500000行每秒 which:8806X,7540364行每秒 Rcpp:13476X,11538462行每秒 End.
由于牵涉到行处理,所以最好的方法是在data.table语句中进行循环。本题运用了logical类向量在四则运算时TRUE为1,FALSE为0的特征,进行识别。...接下来,从第一行到最后一行,设定一个循环的t值,由于是判断最近连续3个交易日是否涨跌,那么就从每只股票的第4个交易日t+3开始计算,因而有l[[t+3]]和date[t+3];而后计算b1和b2最近三天的均值...最后,需要对生成的.N-3行观测进行合并,在这里用到了rbindlist(l)。 line 3 则计算出了每一天当中最近三天上涨和下跌的股票数。首先以!...故而将tag设定为三种观测值r3day_up、r3day_dn以及others,用ifelse语句进行生成。...而后根据date和tag分组计算,每天属于r3day_up、r3day_dn以及others的股票数量:stkcd_amount = uniqueN(symbol)。
lncRNA_index,]) p1+p2 draw_heatp <- function(exp){ cg=names(tail(sort(apply(exp,1,sd)),1000))#apply按行...('1'是按行取,'2'是按列取)取每一行的方差,从小到大排序,取最大的1000个 library(pheatmap) pheatmap(exp[cg,],show_colnames =F,show_rownames...= F) #对那些提取出来的1000个基因所在的每一行取出,组合起来为一个新的表达矩阵 n=t(scale(t(exp[cg,]))) # 'scale'可以对log-ratio标准化数值进行归一化...top,发现排第一的ENST00000343067其实也是EPB41 于是回到基因水平查看DEGs: 看看和原文差异表达结果logfc的散点图: library(data.table) deg_mrna_au...,越大模块越少,一般为0.25 # minModuleSize: 每个模块里最少放多少个基因,设定越大模块越少 # 输出结果根据模块中基因数目的多少,降序排列,依次编号为 `1-最大模块数`。
第一节打开RStudio先运行以下代码library(GEOquery)library(dplyr)library(tidyverse)library(data.table)1.R包的安装1.install.packages...freadgetwdanno=fread("GPL96-57554.txt",sep="\t",header=T,data.table = F)#能在excel中打开的文件都可以用fread函数读取ID_symbol...symbol,split=" /// ",fixed=T)#fixed=T表示精确查找gene_symbol 中的第一个元素...,计算每个对比中每个基因的moderated t-statistic和log-oddsallDiff 中的”2“代表design中的第2列火山图#画个火山图library(ggplot2)library(ggrepel)
领取专属 10元无门槛券
手把手带您无忧上云