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

R data.table根据字符向量中的部分字符串匹配选择行

R data.table是一个用于数据处理和分析的强大工具,它提供了高效的数据操作和查询功能。在data.table中,可以使用字符串匹配来选择行,以下是完善且全面的答案:

R data.table是一个基于data.frame的R语言包,它提供了一种高效的数据处理和分析方法。它的核心思想是使用类似SQL的语法来操作数据,同时利用了内存优化和并行计算等技术,使得处理大规模数据变得更加高效。

在data.table中,可以使用字符串匹配来选择行。具体而言,可以使用grep()函数或正则表达式来匹配字符向量中的部分字符串,并根据匹配结果选择相应的行。下面是一个示例:

假设有一个data.table对象dt,其中包含一个字符向量列text,我们想要选择其中包含特定字符串的行。可以使用grep()函数来实现:

代码语言:txt
复制
library(data.table)

# 创建示例data.table对象
dt <- data.table(text = c("apple", "banana", "orange", "grape"))

# 使用grep()函数选择包含特定字符串的行
keyword <- "an"
selected_rows <- dt[grep(keyword, text)]

在上述示例中,我们使用grep()函数和正则表达式"an"来选择text列中包含"an"的行,结果将存储在selected_rows中。

除了使用grep()函数,还可以使用其他正则表达式函数,如grepl()regexpr()等,根据具体需求选择合适的函数。

对于R data.table的更多详细信息和用法,可以参考腾讯云的相关产品文档和教程:

请注意,以上答案仅供参考,具体的实现方法和推荐的腾讯云产品可能因实际情况而异,建议在实际使用时参考相关文档和官方指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

你用会写for/while循环,就不太愿意去掌握apply组函数,甚至那些性能逆天并行算运算包;刚开始会用基础字符串处理,看到stringr包就面临着技能工具更新问题…… 太多选择,让人眼花缭乱,...然后根据自己掌握现状选择最熟练一套,随着时间推移慢慢发现现有工具组合不足,开始尝试往更加高效、简介工具迁移,这样以需求为推动力技能升级和迁移更为彻底和明确。...说了这么多,绕了这么大弯子想干啥呢,没错今天又要给自己升级新技能啦,这次主角儿是 data.table 一个R语言高性能数据处理包,一个包可以涵盖以上所说数据处理部分内容,而且操作高度抽象化话...(carrier,tailnum)] #但心里要清楚列索引接受条件是含有列表列表,而且这里列表作为变量给出,而非data.frame时代字符串向量。 行列同时索引毫无压力。...注意以上新建列时,如果只有一列,列名比较自由,写成字符串或者变量都可以,但是新建多列,必须严格按照左侧列名为字符串向量,右侧为列表模式,当然你也可以使用第二种写法。

3.6K80

R练习50题 - 第一期

问题分析 首先,我们需要把股票代码symbol包含8那些观测找出来。我们可以借助与stringr这个字符串处理包。这一步不难,稍微有些挑战是去重。如果我们不去重,那么我们会得到非常多重复观测。...例如股票600128,如果它一共有100天观测,那么我们会出现100个重复结果。为了去重,我们需要借助于data.tableunique函数。 我们希望最终输出是一个字符串向量: ?...str_detect(symbol, "8")含义为:对于symbol向量,判断其是否含有字符8,如果有,则为True,否则Faulse。 unique:找出symbol不重复值。...在data.table语法,先进行列选择操作,再对列进行处理。所以上述语句会先执行str_detect,再执行unique。 练习2:每天上涨和下跌股票各有多少?...整个代码执行顺序是:先选择(逗号空白),再分组(keyby语句),最后进行组间统计(num语句)。 我们答案、列以及分组三条语句各占一,实际上这仅仅是为了让代码更直观。

2.4K40

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

将一个R对象转化为data.tableR可以时矢量,列表,data.frame等,keep.rownames决定是否保留名或者列表名,默认FALSE,如果TRUE,将名存在"rn",keep.rownames...sep2,对于是list一列,写出去时list成员间以sep2分隔,它们是处于一列之内,然后内部再用字符分开; eol,分隔符,默认Windows是"\r\n",其它是"\n"; na,na...=FALSE] 和x[, .SD, .SDcols=cols]一样 mult 当有i 匹配有多行时,mult控制返回,"all"返回全部(默认),"first",返回第一,"last"返回最后一...roll 当i全部匹配只有某一匹配时,填充该行空白,+Inf(或者TRUE)用上一值填充,-Inf用下一值填充,输入某数字时,表示能够填充距离,near用最近填充 rollends... 填充首尾不匹配,TRUE填充,FALSE不填充,与roll一同使用 which TRUE返回匹配行号,NA返回不匹配行号,默认FALSE返回匹配 .SDcols 取特定列,然后.

5.6K20

R练习50题 - 第二期

习题 3 每天每个交易所上涨、下跌股票各有多少? 分析: 这题和Ex-2非常类似,唯一不同就是分组变量多了一个:对于每个交易日,我们不仅需要根据涨跌updown分组,还要根据交易所分组。...注意这三个变量先后顺序非常重要,不能颠倒。 字符串截取函数str_sub来自stringr包。...练习 4 沪深300成分股,每天上涨、下跌股票各有多少? 分析: 本题仍旧是Ex-2拓展,只不过要求我们进行行选择操作。在data.tabledt[i,j,by]语法,i代表选择操作。...data.table只会选择为True那些元素。 在data.tabledt[i, j, by]语法,先执行行选择操作i, 再执行分组操作by, 最后执行列操作j。...注意以上运算结果是一个取值为True或False向量data.table最终会挑选出为True那些。 我们仍旧使用ifelse函数生成updown这个变量。

85220

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

版权声明:本文为博主原创文章,转载请注明出处 R语言data.table包是自带包data.frame升级版,用于数据框格式数据处理,最大特点快。...因此,在对大数据处理上,使用data.table无疑具有极高效率。这里主要介绍在基因组数据分析可能会用到函数。...",因子和列名只有在他们需要时候才会被加上双引号,例如该部分包括分隔符,或者以"\n"结尾,或者双引号它自己,如果FALSE,那么区域不会加上双引号,如果TRUE,就像写入CSV文件一样,除了数字...,设置mult="first“,mult=”last"则最后返回x一样行数; verbose 当时TRUE时候,工作台交互 chmatch 返回各字符串在第二个对象匹配位置...chmatch(x, table, nomatch=NA_integer_) x %chin% table x 字符矢量,需要去匹配值; table 字符矢量,匹配目标

3.2K10

新书《R语言编程—基于tidyverse》信息汇总

这些语法在其它编程语言中也是相通,包括搭建 R 语言环境,常用数据结构(存放数据容器) :向量、矩阵、数据框、因子、字符串(及正则表达式) 、日期时间,分支结构,循环结构,自定义函数。...同样是讲 R 基本语法,本书不同之处在于,用tidyverse更一致、更好用相应包加以代替:用tibble代替data.frame、用forcats包处理因子,用stringr讲字符串 (及正则表达式...、R连接数据库、中文编码问题及解决办法),数据连接(数据按/列拼接、SQL数据库连接),数据重塑 (“脏”数据变“整洁”数据,长宽表转换、拆分与合并列),数据操作 (选择列、筛选、对排序、修改列、...大家可以根据自己需求选择阅读侧重点,不过我还是希望您能够按照顺序完整地阅读,这样才能让您彻底地更新一遍您 R 知识,避免R base与tidyverse 混着用,因为二者在写 R 代码上不是一个思维...[6] 第05篇 1.2 数据结构Ⅰ:向量、矩阵、多维数组[7] 第06篇 1.3 数据结构Ⅱ:列表、数据框、因子[8] 第07篇 1.4 数据结构Ⅲ:字符串、日期时间[9] 第08篇 1.5 正则表达式

2.3K21

从零开始异世界生信学习 R语言部分 04 文件读写与认知

读取ex1.txt ex1 <- read.table("ex1.txt") #列名不能正确表示,并且内容数值变为了字符串 ex1 <- read.table("ex1.txt",header =...= read.csv("rod.csv") 图片 图片 读取数据不规则(部分行列空白文件) #3.读取soft.txt soft <- read.table("soft.txt") #表格不规则,有部分是空白...图片 将一个项目的不同部分分别存在不同文件夹 图片 图片 图片 # data.tablefread函数 soft = data.table::fread("soft.txt",data.table...") b$Sheet1 export(b,"jimmyzhenbang.xlsx") #导出后也为多列表xlsx文件 export(b$Sheet1,"jimmyzhenbang.csv") #可以将列表部分就可以导出...由向量拼接而来 m3 = cbind(1:10, # cbind函数表示按照合并向量,rbind为按照列合并数据 11:20, 30:21) m3 #4.

1.3K40

《高效R语言编程》6--高效数据木匠

,stringi和stringr可以通过正则表达式更新脏字符串,assertive和assertr包可以在数据分析项目的一开始进行数据完整性校验。...通常数据清理是将非标准文本字符串转换成lubridate简介所描述数据格式。vignette("lubridate") ? 整洁是个广泛概念,也包括重构数据,以便有利于数据分析和建模。...使用dplyr高效处理数据 这个包名意思是数据框钳,相比基础R优点是运行更快、与整洁数据和数据库配合好。函数名部分灵感来自SQL。 ?...与基本R类似函数不同,变量无需使用 $ 操作符就可直接使用,设计与magrittr包%>%管道操作符一起使用,以允许每个数据阶段写成新。其是一个大型包,本身可以看成一门语言。...unlist()函数作用,就是将list结构数据,变成非list数据,即将list数据变成字符串向量或者数字向量形式。

1.9K20

十、文件读写

更改方法: 名没有正确识别,修改用: row.names =1 列名改变了,修改时用:check.names =F ###为什么列名会被修改,因为在R语言中默认列名不能出现特殊字符...,如果有特殊字符,就会转变成.号, check.names =F 意思是不要检查和修改列名特殊字符。...参数,sep=空字符串,只要两个数据之间分割符号是看不见就会被当成一整个分割符号(比如一个空格,两个空格,一个制表符,两个制表符都看不到),需要做以下修改。...,只是一个名字而已 "40" "20" "51" "46" "38" "49" ###有用是下面这一字符串 y[,1] = as.numeric(y[,1]...但是y中有字符向量,有数值型向量,所以本身文件有问题,平时自己处理文件时候直接输出为数据框、列表都可以。不保存为矩阵。

1.7K40

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

接「R」数据操作(一)和「R」数据操作(二) 使用data.table包操作数据 data.table包提供了一个加强版data.frame,它运行效率极高,而且能够处理适合内存大数据集,它使用[]...data.table基本语法是dt[i, j, by],简单说就是使用i选择,用by分组,然后计算j。接下来我们看看data.table继承了什么,增强了什么。...N是最常用符号之一,它表示当前分组,对象数目(就不用调用nrow函数啦)。在[]使用它指提取最后一。...动态作用域 我们不仅可以直接使用列,也可以提前定义注入.N、.I和.SD来指代数据重要部分。...,而是使用market_data[, (columns) := list(...)]来动态设定列,其中columns是一个包含列名字符向量,list(...)是每个列对应值: price_cols

5.9K20

R数据框如何取交集

这里需要注意,限定软件越多,得到结果会越少,也有可能完全得不到结果,所以这个需要根据自己数据实际情况确定。 那么我们怎么利用R代码来对miRNA预测结果取交集呢?...我们知道一般在R里,对向量取交集,直接用intersect函数就可以了。...下面给大家介绍三种对R数据框取交集方法 方法一、我们将各列信息合并成一个字符串,然后取交集 #将各列信息用_连接起来 combine1=apply(df1,1,function(x) paste...(x,collapse = "_")) combine2=apply(df2,1,function(x) paste(x,collapse = "_")) #查看合并后字符串向量1和字符串向量2交集...all_equal(result1,result2) #[1] TRUE 方法三、利用data.table包里fintersect函数 #加载data.table包 library(data.table

1.6K20

R语言:data.table语句批量生成变量

上述结果可以看出,我们重新生成了很多被处理过变量,都带有后缀_xtrct,下面让村长对这一代码进行详细解析。...在这里通过链接推送lapply使用原理,再加上stringr包str_match这个函数使用,截取出诊断结果中出现过继发性醛固酮或者醛固酮,没有出现过自动记为NA。...:=’ 左边格式问题: ':=' 左边格式应该是一个向量,一个带有需要被处理变量字符格式向量,这一点从colnames这个函数使用可以得知。...那么对于一个字符格式向量处理,最好选择就是stringr这个包,在这里我们为需要提取一部分字段变量,运用str_c这个函数,对每一个变量名加入了后缀_xtrct,从而生成一系列新变量名,也即是我们上文中生成那个数据集...大猫微信号是: iRoss2007 村长B站主页是:http://space.bilibili.com/40771572 大猫R语言课堂关注R语言、数据挖掘以及经济金融学。

1.1K20

R语言 数据框、矩阵、列表创建、修改、导出

csv打开会报错,该知识点用于防止部分代码错误应用csv套用tsv等#文件读写部分(文件位于R_02Rproject)#1.读取ex1.txt txt用read.table读,变量名不需要有"",...文件名是真实存在文件,要有""#直接读取如果失败,需要指定参数#ex1 <- read.table("ex1.txt") #读入该文件后会发现原文件被认为没有列名,列名被当作第一字符型与数值型在一起会将所有数值型改为字符型以满足向量同一类型...#ex2 <- read.csv("ex2.csv") #读入该文件后会发现原文件第一列被错误当作数据而非行名,且列名.变成了-,R语言将列名特殊字符-转化了,该编号可能与其他数据编号无法匹配,ex2...函数可以避免此前错误a<-fread("soft.txt",data.table = F)class(a)#但其不会有名,且其会有一个data.table数据结构多出来,可以设置data.table...3.筛选test,Species列值为a或ctest[test$Species %in% c("a","c"),]#注意本题至少有三个问题,第一是值a,c为字符型,要加"",第二是向量是c()不是

7.6K00

Python 在这点上竟被 Julia 和 R 碾压?!

考虑到这一点,我想调研 Julia 进行字符串排序速度,能否和 R 并驾齐驱,至少能够接近 R字符串排序表现。...研究后发现 R 使用基数排序对字符串进行排序,因此是字符串基数排序 Julia 实现就是顺理成章事。 我部分研究都指向了字符串最高有效数字(MSD)基数排序一些变体。...在字符串中加载第 n 个字符字节一种方法是通过代码单元 codeunit(s, n) 。例如: ? 但是根据计算,这个会很慢,赶不上 R。...问题 2:在排序基数时置换字符串 一旦将基础字节加载到字节向量,就可以使用基数排序对字节向量进行排序,这非常快。但是还需要同时置换原始字符串向量。为此,我编写了 sorttwo!...但是,Julia 默认没有驻留字符串(虽然有一个包InternedStrings.jl ),因此这些类型优化并不容易获得,导致 Julia 可能很难在所有情况下匹配 R 字符串排序性能。

1.5K20

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

R 当中是split( ),*apply( ),aggregate( )…,以及plyr包 1、split函数 split( )基本用法是:group <- split(X,f) 其中X 是待分组向量...在base包里和split功能接近函数有cut(对属性数据分划),strsplit(对字符串分划)以及subset(对向量,矩阵或数据框按给定条件取子集)等。...可以看到,计算结果第一列实际上是“SELLERID.CLIENT”,我们需要把它拆分成两列并调换顺序才。...(iris$setosa)] #按照照setosa大小,重排Sepal.Length数据列 四、dplyr与data.table data.table可是比dplyr以及python...data.table语法简洁,并且只需一代码就可以完成很多事情。进一步地,data.table在某些情况下执行效率更高。

20.5K32

Python 再牛,在字符串排序上还是被 Julia 和 R 碾压

然而,最初调查显示,在对具有大量重复值字符串进行排序时,与 R 相比,Julia 字符串排序较慢。...经过一些研究后,我发现 R 使用基数排序对字符串进行排序,因此是字符串基数排序 Julia 实现就是顺理成章事。 我部分研究都指向了字符串最高有效数字(MSD)基数排序一些变体。...在字符串中加载第 n 个字符字节一种方法是通过代码单元 codeunit(s, n) 。例如: 但是根据计算,这个会很慢,赶不上 R。...问题2:在排序基数时置换字符串 一旦将基础字节加载到字节向量,就可以使用基数排序对字节向量进行排序,这非常快。 但是还需要同时置换原始字符串向量。为此,我编写了 sorttwo!...但是,Julia 默认没有驻留字符串(虽然有一个包InternedStrings.jl ),因此这些类型优化并不容易获得,导致 Julia 可能很难在所有情况下匹配 R 字符串排序性能。

1.2K30

128-R茶话会21-R读取及处理大数据

毫无疑问指向data.tablefread。 它有两个优点: 效率飞速,自带多线程操作; data.table 格式很好地节约内存。 可是,300多G 对我来说还是有些大了。...而如snowfall 等并行处理包,似乎无法处理readLines 这种文件链接,在我测试,每次并行循环都会重建链接,也就是若干个前N 文件。 1.2-将数据拆分 那么该如何来并行呢?...2-优化处理过程 首先,我矩阵是从数据框得到,而它们读入时被定义为了字符串型,我需要对他们使用转型。 使用apply?来点多线程,mapply? no,no,no。...还记得[[125-R编程19-请珍惜R向量化操作特性]] 吗? 我们将它们直接转型成对应矩阵就好,相当于重新创建了矩阵,接着将矩阵设计成和原矩阵相同长宽属性。...如果更大规模数据量呢?至少我暂时还没有遇到。而且简单数据处理,linux sed 或awk 也是不错选择,csvtk 也是一个很好用软件。 ps:感觉我这期翻译味好重,奇怪了。

40020

还在用tm?你OUT啦!

写 在前面 一提到用R做文本挖掘,小伙伴们最先想到应该是tm包。的确,作为R平台文本挖掘首选框架,tm包实现了将文本转换至向量一切工作,tm甚至还可以实现停用词以及词频分析等一切简单文本分析。...其中根本原因就在于tm包在设计之初就存在大部分R通病:只求“get the work done”,对于性能则几乎不考虑。...为了做到极致性能,Quanteda做了如下努力 : 内部使用stringi作为字符处理工具 01 stringi由C++写成,效率毋庸置疑,是目前R中最优秀字符串处理包,没有之一。...内部基于data.table与Matrix包 02 data.table是目前R数据处理性能最快包,比原生data.frame要快几十甚至上百倍。...由于文本很多词出现频率不高,所以当文本转换为向量时会产生稀疏矩阵,稀疏矩阵会占用大量内存并降低性能。Matrix包则对于稀疏矩阵进行了很多优化,是当前计算稀疏矩阵最快包。

75620
领券