在日常数据分析的过程中,我们经常需要在一个字符串或者字符串向量中查找是否包含我们要找的东西,或者向量中那几个元素包含我们要查找的内容。...这个时候我们会用到R中最常用的两个函数,grep和grepl。...其实grep这个函数也并非是R所特有的,在linux中模式匹配也用grep这个函数,前面我就给大家简单介绍过☞Linux xargs grep zgrep命令。...我们先来看看grep和grepl这两个函数的用法。 这两个函数最大的区别在于grep返回找到的位置,grepl返回是否包含要查找的内容。接下来我们结合具体的例子来讲解。...☞讨论学习R的grepl函数 参考资料: ☞Linux xargs grep zgrep命令 ☞讨论学习R的grepl函数
写 在前面 本期还是由村长来为大家供稿,这期讲一个村长遇到的关于data.table比较有趣的问题,希望大家支持!! 问 题:i, j, by同时输入数字会怎样?...在往期的公众号文章,都提到了data.table的主要语句DT[i, j, by], 简而言之,i 用来选择或者排序,by 用来分组,j 用来运用函数进行处理。...以mtcars这个R自带的数据集为例,我们知道mtcars[1]的运行结果,是选择这个数据集的第一行,结果如下: ? mtcars[1,1]的运行结果,是选择第一行第一列的元素,结果如下: ?...首先,我们单独看i只有一个1的情况下是什么运行结果,为了让运行出来的代码被认定是data.table的格式,我们在j中加入.SD(不清楚.SD用途的小伙伴可以查看data.table的manual,或者查看笔者上一篇推送用...可见,在DT的i中输入一个数字和用一般的提取符号`[`只输入一个数字的结果完全一样,就是提取这个数据集中的某一行。
将一个R对象转化为data.table,R可以时矢量,列表,data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行中,keep.rownames...(sv=sum(v))] #对y列求和,输出sv列,列中的内容就是sum(v) DT[, ...., by=x][order(x)] #和上面一样,采取data.table的链接符合表达式 DT[v>1, sum(y), by=v] #对v列进行分组后,取各组中v>1的行出来,各组分别对定义的行中的...roll 当i中全部行匹配只有某一行不匹配时,填充该行空白,+Inf(或者TRUE)用上一行的值填充,-Inf用下一行的值填充,输入某数字时,表示能够填充的距离,near用最近的行填充 rollends...SD就包括了页写选定的特定列,可以对这些子集应用函数处理 allow.cartesian FALSE防止结果超出nrow(x)+nrow(i)行,常常因为i中有重复的列而超出。
引言:本文整理自vbaexpress.com论坛,有兴趣的朋友可以研阅。...Q:我在列D的单元格中存放着一些数据,每个单元格中的多个数据使用换行分开,列E是对列D中数据的相应描述,我需要在列E的单元格中查找是否存在列D中的数据,并将找到的数据标上颜色,如下图1所示。 ?...A:实现上图1中所示效果的VBA代码如下: Sub ColorText() Dim ws As Worksheet Dim rDiseases As Range Dim rCell...End If Loop Next iDisease Next rCell End Sub 代码中使用Split函数以回车符来拆分单元格中的数据并存放到数组中...,然后遍历该数组,在列E对应的单元格中使用InStr函数来查找是否出现了该数组中的值,如果出现则对该值添加颜色。
接下来,我就为大家分享几个我在工作当中最常用来做数据分析用到的包,dplyr和data.table,我保证你get到这两个包后,就再也不想用R里面自带的基础包函数进行数据分析了!!...作为课代表的我来帮大家简单的总结一下: 我们都知道R有个令人诟病的缺点就是跑起来耗内存,data.table相对于dplyr 更快、更节省内存了!...DTdata.table() DT[i,j,by] take DT,subset rows using i,then calculate j grouped by by 我们在横轴上过滤数据...,用by进行分组,然后在列上面进行计算。...以上讲的这些只是我工作中data.table用得最多的功能,它的强大之处还远远不止这些!如果你想深入,可以去官网下载文档,你绝对值得拥有!
本次的练习是:如下图1所示,在单元格区域A2:A12和B2:B12中给定两列数字,要在列C中从单元格C2开始生成一列数字。规则如下: 1. 列B中的数字的数量要小于等于列A中数字的数量。 2....列B中的任意数字都可以在列A中找到。 3. 在列A或列B已存放数字的单元格之间不能有任何空单元格。 4. 在列C中的数字是从列A中的数字移除列B中的数字在列A中第一次出现的数字后剩下的数字。 5....换句话说,列B和列C中的数字合起来就是列A中的数字。 ? 图1 在单元格D1中的数字等于列A中的数字数量减去列B中的数字数量后的值,也就是列C中数字的数量。...公式的思路就是构造一个数组,能够实现在List1和List2之间执行MATCH函数查找时,列C中的数值就是找不到的值,返回FALSE。 然而,实现起来并不是想像中的那么简单。...使用下面的公式确定列C中要返回的数字数量: =COUNT(List1)-COUNT(List2) 1.
函数效果 函数解释 检查单元格 H2 中的值是否存在于指定的单元格范围 I2:I10 中。如果存在,就返回 H2 单元格的值;如果不存在,则返回空白("")。...具体解释如下: 1、MATCH(H2, I2:I10, 0): MATCH 函数查找 H2 单元格中的值在范围 I2:I10 中的位置。 参数 0 表示进行精确匹配。...如果找到了匹配的值,MATCH 函数将返回匹配项在该范围中的相对位置(例如,找到匹配项在 I3,则返回 2,因为 I3 是在 I2:I10 范围中的第 2 行)。...中存在),则返回 H2 的值。...如果结果为 FALSE(即 H2 的值在范围 I2:I10 中不存在),则返回空白 ""。
R语言运行几个长列比运行一些短列快,所以一般认为宽数据(不整洁),长数据(整洁)。...正则表达式 R与stringr分别使用grepl()和str_detect()来进行,我比较喜欢基础R的,不知你喜欢安装包还是用基本的。...列改名 rename(),使用反引号‘`’包裹,允许R使用不规范的列名。...改变列的分类 R对象的类是性能的关键,as.numeric()、data.matrix()等改变类,或者vapply(data, class,chracter(1))。...这里建议不要把数据库密码和API密钥等放在命令中,而要放大.Renviron文件中。dbConnect()函数连接数据库,dbSendQuery()查询,dbFetch()加载到R中。
以下是一些常见的格式: 计数矩阵(Count Matrix): 这是最基本的格式,通常由比对到参考基因组的读段生成。 每一行代表一个基因或转录本,每一列代表一个样本。...单元格中的值表示该基因在该样本中的读段计数。 FPKM/FPKM-UQ(每千个碱基每百万片段的比率/未量化的FPKM): FPKM是标准化的表达量指标,考虑了基因长度和测序深度。...FPKM-UQ是未量化的FPKM,它没有经过标准化处理,通常用于避免引入人为的表达量变化。 TPM(每千个转录本每百万片段的比率): TPM是另一种标准化的表达量指标,它考虑了样本中的总转录本数。...acc=GSE182923 而且这个geo2r网页工具还贴心的给出来了代码,如下所示: # Version info: R 4.2.2, Biobase 2.58.0, GEOquery 2.66.0,...<- tbl[keep, ] # log transform raw counts # instead of raw counts can display vst(as.matrix(tbl)) i.e
加载R包rm(list=ls())setwd("./11.29-scRNAseq-GSE163558")library(data.table)library(stringr)library(data.table...sceList)){ sceList[[i]] i]]) sceList[[i]] i]...element_text(angle = 90, hjust = 1, vjust = 0.5))dot_plottable(scRNAlist$seurat_clusters)# 添加celltype列scRNAlist...("^PT", scRNAlist$orig.ident) ~ "Primary_Tumor", grepl("^NT", scRNAlist$orig.ident) ~ "Adjacent_Nontumor...element_text(angle = 90, hjust = 1, vjust = 0.5))dot_plottable(Myeloid$seurat_clusters)# 添加celltype列Myeloid
❝本周推文本来是计划把一篇文献中的NMF部分复现一下,然后在处理数据的时候发现在读入数据以后,基因名字显示的并不是symbol而是ensemble ID, 想着要不就从这个小小的问题入手写个笔记~ ❞...) getwd() setwd("../") dir='raw/' samples=list.files( dir ) samples library(data.table) a=fread.../raw/GSE210171_acc_scrnaseq_counts.txt.gz',data.table = F) a[1:4,1:4] class(a) a<-as.data.frame...meta.data)),"ACC5", ifelse(grepl("ACC7",rownames(sce.all@meta.data)),"ACC7", ifelse(grepl("ACC15",...label.box = T) p_all_markers+p_umap ggsave('markers_umap_by_celltype_2.pdf',width = 13,height = 8) ❝该篇文献中也有关于
excelperfect 在下图1所示的工作簿Data.xlsx的工作表Sheet1中,存放着待使用的数据。 ?...图1 在下图2所示的工作簿GetData.xlsm中,根据列C中的数据,在上图1的工作簿Data.xlsx的列E中查找是否存在相应数据的单元格。 ?...图2 然后,将Data.xlsx中对应行的列I至列K单元格中的数据复制到GetData.xlsm相应的单元格中,如下图3所示。 ?...Set wksData =Workbooks("Data.xlsx").Sheets("Sheet1") '判断所选单元格是否在列C中 If ActiveCell.Column... 3 Then MsgBox ("请选择列C中的单元格或单元格区域.")
目录 R语言第一章数据处理基础①读取EXEL表格数据 R语言第一章数据处理基础②一行代码完成数据透视表 rpivotTable:R的数据透视表 安装 # devtools::install_github...(c("ramnathv/htmlwidgets", "smartinsightsfromdata/rpivotTable")) 数据透视表应出现在的RStudio的Viewer中。...data可以是data.frame表或data.table。...如果仅选择数据,则数据透视表将打开,行和列上没有任何内容(但您可以随时拖放行或列中的任何变量) rows and cols允许用户创建报告,即指示哪个属性将在行和列上。...这里的选项很多:计数,计数唯一值,列表唯一值,总和,整数和,平均值,总和,80%上限,80%下限,总和为总分数,总和为行数,总和为列的分数,计为总分数,计算为行的分数,计为列的分数 renderers决定了用于显示的图形渲染类型
接「R」数据操作(一)和「R」数据操作(二) 使用data.table包操作数据 data.table包提供了一个加强版的data.frame,它运行效率极高,而且能够处理适合内存的大数据集,它使用[]...data.table的基本语法是dt[i, j, by],简单说就是使用i选择行,用by分组,然后计算j。接下来我们看看data.table继承了什么,增强了什么。...对数据进行分组汇总 by是data.table中另一个重要参数(即方括号内的第3个参数),它可以将数据按照by值进行分组,并对分组计算第2个参数。...的动态作用域 我们不仅可以直接使用列,也可以提前定义注入.N、.I和.SD来指代数据中的重要部分。...,每条记录了钻石的10个属性,现在我们队cut列中的每种切割类型都你拟合一个线性回归模型,由此观察每种切割类型中carat与depth是如何反映log(price)的信息。
上次推文更新了一篇文章复现,今天同样是接着之前那篇文章来做一下小提琴图的复现。...(Seurat) library(cowplot) library(data.table) library(dplyr) library(ggplot2) library(stringr) getwd(...为HS sce.all.int$groupgrepl("GSM6840117|118|119|120|121|122|123|124",sce.all$orig.ident),"HS"...ifelse(grepl("GSM6840143|144|145|146|147|148|149|150|151|152",sce.all$orig.ident),"Control...axis.text.x=element_text(angle=45,hjust = 1));pp2 pp3R"
duplicated(ids$symbol),] dat=dat[ids$probe_id,] #新的ids取出probe_id这一列,将dat按照取出的这一列中的每一行组成一个新的dat rownames...(dat)=ids$symbol#把ids的symbol这一列中的每一行给dat作为dat的行名 dat[1:4,1:4] #保留每个基因ID第一次出现的信息}save(gse_number,dat...平台是GPL13158,不能通过ids=idmap( a@annotation ,'soft')函数直接获取,应该去GEO网站上找到对应的文件下载导入到R中。...duplicated(ids$symbol),] dat=dat[ids$probe_id,] #新的ids取出probe_id这一列,将dat按照取出的这一列中的每一行组成一个新的dat rownames...duplicated(ids$symbol),] dat=dat[ids$probe_id,] #新的ids取出probe_id这一列,将dat按照取出的这一列中的每一行组成一个新的dat rownames
library(data.table) id data.table = F)#这一步至关重要...id$V9 这里我们发现第九列内容很多,然后画红线的就是我们需要获取的数据。 ? 看一下第三列 table(id$V3) 第三列有3种,我们这里需要的是GENE ?...获取只有gene的所有行 id1grepl("gene",id$V3),] 然后我们处理第九列 library(stringr) options(stringsAsFactors = F)...基因ID 准备矩阵行和列 w I", "FHL1", "C4BP", "Properdin...#CFP=properdin #SERPING1=C1INH #C4BP=C4BPA #VSIG4=CRIg 我手动替换了新的i基因名字,然后我喜欢处理数据框,把它变成了数据框。
data.table中,还有一个比较特立独行的函数: 使用:=引用来添加或更新一列(参考:R语言data.table速查手册) DT[, c("V1","V2") := list(round(exp(V1...—————————————————————————————————————————————— 六、额外的参数(来源:R语言data.table速查手册) 1、mult参数 mult参数是用来控制i匹配到的哪一行的返回结果默认情况下会返回该分组的所有元素...nomatch参数用于控制,当在i中没有到匹配数据的返回结果,默认为NA,也能设定为0。...—————————————————————— 实战一:在data.table如何选中列,如何循环提取、操作data.table中的列?...(x)] 还有 data$x 如果有很多名字很长的指标,data.table中如果按列进行遍历呢? data[,1]是不行的,选中列的方式是用列名。
trainterm grepl("\\S", trainterm$term),] 3.1 计算TF指标 如上图1,logic就是新加的一列数字。...testterm grepl("\\S", testterm$term),] testterm$logic 列 testtfidf...,如果你的电脑报告内存不足的错误,可以使用data.table包里的`dcast`函数试试。...(笔者游戏本ROG玩家国度,i7-6700,16g内存,69w数据量做随机森林直接崩溃。。。) 转化为稀疏矩阵,1表示访问,0表示未访问。...可参考博客:给R变个形 图4 4.2 训练集- 随机森林模型 随机森林模型不需要id项,通过row.names把id这一列放在R默认序号列,如图4中的第一列。
数据挖掘之道:基于R的实战之旅》的情感分析章节。...trainterm grepl("\\S", trainterm$term),] 3.1 计算TF指标 如上图1,logic就是新加的一列数字。...testterm grepl("\\S", testterm$term),] testterm$logic 列...图4 4.2 训练集- 随机森林模型 随机森林模型不需要id项,通过row.names把id这一列放在R默认序号列,如图4中的第一列。...library(randomForest) row.names(train) R编号列 train <- subset(train,