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

R子集data.frame by column name使用另一个列表中的部分字符串匹配

在R中,可以使用subset()函数来根据列名进行子集操作。要使用另一个列表中的部分字符串进行匹配,可以结合使用grepl()函数和逻辑运算符。

下面是一个完善且全面的答案:

在R中,要根据列名进行子集操作,可以使用subset()函数。该函数的第一个参数是要进行子集操作的数据框,第二个参数是逻辑条件,用于筛选满足条件的行。

要使用另一个列表中的部分字符串进行匹配,可以使用grepl()函数。grepl()函数接受两个参数,第一个参数是要匹配的模式,第二个参数是要匹配的字符串。它返回一个逻辑向量,指示每个字符串是否与模式匹配。

下面是一个示例,演示如何使用subset()函数和grepl()函数来根据列名进行子集操作:

代码语言:txt
复制
# 创建一个示例数据框
df <- data.frame(
  name = c("John", "Jane", "Alice"),
  age = c(25, 30, 35),
  city = c("New York", "London", "Paris")
)

# 创建一个包含部分列名的列表
columns <- c("name", "city")

# 使用subset()函数和grepl()函数进行子集操作
subset_df <- subset(df, grepl(paste(columns, collapse = "|"), names(df)))

# 输出结果
print(subset_df)

在上面的示例中,我们首先创建了一个包含三列的数据框df,然后创建了一个包含部分列名的列表columns。接下来,我们使用grepl()函数和paste()函数将columns列表中的列名合并为一个正则表达式模式,用于匹配数据框的列名。最后,我们使用subset()函数根据列名进行子集操作,并将结果存储在subset_df中。最后,我们打印输出了子集数据框subset_df

这种方法可以方便地根据另一个列表中的部分字符串进行列名的匹配和子集操作。对于更复杂的匹配需求,可以使用正则表达式的其他功能来实现。

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

相关·内容

Pandas 2.2 中文官方教程和指南(三)

这些方法通常与单个元素内置字符串方法具有匹配名称,但是在每个值列上逐个应用(记得逐元素计算吗?)。 创建一个新列Surname,其中包含乘客姓氏,通过提取逗号前部分。...字符串方法Series.str.contains()检查列Name每个值是否包含单词Countess,并对每个值返回True(Countess是名称部分)或False(Countess不是名称部分...到用户指南 更多有关提取字符串部分信息,请参阅用户指南中有关字符串匹配和提取部分。 泰坦尼克号乘客,哪位乘客名字最长?...R Python 数组 列表 列表 字典或对象列表 data.frame 数据框 ddply 在 R使用名为 df data.frame 来按 month 汇总 x 表达式: require...在 R ,您可能希望获取 data.frame 行,其中一个列值小于另一个值: df <- data.frame(a=rnorm(10), b=rnorm(10)) subset(df,

15400

R3数据结构和文件读取

通过这个函数生成seq变量将包含100个在-3到3之间数字。形式参数,实际参数可以改动.括号前面的代表函数,函数()=前面的部分是形式参数,可以省略不写,后面是实际参数,使用时候可以修改。...具体操作如下:假设有一个数据框为df,要按照其中column_name列进行排序,可通过以下代码实现:df<-df[order(df$column_name), ]这会返回按照column_name列升序排列数据框...这会返回按照column_name列降序排列数据框。...column_name列且无重复行数据框df_unique。...如果需要保留所有列并仅去除重复行,则可以将上述代码c("column_name")替换为NULL,即:df_unique <- unique(df)这会返回一个去除重复行后完整数据框df_unique

2.7K00

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

将一个R对象转化为data.table,R可以时矢量,列表data.frame等,keep.rownames决定是否保留行名或者列表名,默认FALSE,如果TRUE,将行名存在"rn"行,keep.rownames...DT属性,setattr(x,name,value) x时data.table,list或者data.frame,而name时属性名,value时属性值,setnames(x,old,new),设置x...with 默认是TRUE,列名能够当作变量使用,即x相当于DT$"x",当是FALSE时,列名仅仅作为字符串,可以用传统data.frame方法并且返回data.table,x[, cols, with...roll 当i全部行匹配只有某一行不匹配时,填充该行空白,+Inf(或者TRUE)用上一行值填充,-Inf用下一行值填充,输入某数字时,表示能够填充距离,near用最近行填充 rollends... 填充首尾不匹配行,TRUE填充,FALSE不填充,与roll一同使用 which TRUE返回匹配行号,NA返回不匹配行号,默认FALSE返回匹配行 .SDcols 取特定列,然后.

5.6K20

r」dplyr 里 join 与 base 里 merge 存在差异

构造数据集 下面是一个可重复例子,构造两个数据集,一个是基于 data.frame 列表另一个是就要 data.table 列表: x <- list( a = data.frame(r1...")= 从存储信息来看,这两个列表是没有任何差异。...本质上是 data.table 体格泛型函数不支持类似基础包操作。 如何编写代码支持对上述数据集连接操作?...如果 be_join 不为空,进行如下循环: 如果存在,则将这个子集和 to_join 按共同列合并 如果不存在,使用循环位移一位,将当前 be_join 第 2 个子集移动为 第 1 个。...2 S1 S2 S2 S1 S2 更新 在后面的一些使用过程中发现基础包 merge() 函数在进行连接操作时会输出有问题结果,所以建议使用小伙伴仔细检查结果。

1.5K30

生信学习-Day6-学习R

在这个特定例子,向量 vars 包含了两个元素,它们都是字符串:"Petal.Length" 和 "Petal.Width"。这两个字符串通常对应于数据框列名。...这样做目的通常是为了在后续函数调用简化代码,特别是在你想要操作数据框特定列时。 这会从 your_data_frame 数据框中选择列名与 vars 向量字符串匹配列。...在dplyr包filter()函数中使用时,它可以用于筛选数据框匹配给定集合任一值行。这行代码作用如下: filter(test, ...): 在test数据框筛选行。...z = c("A","B","C",'D'): 类似地,这部分代码创建了另一个名为z列,包含四个字符值:'A'、'B'、'C'和'D'。...结果将是一个新数据框,其中包含了test1那些在test2找到匹配行,而不包含在test2找不到匹配行。这种操作通常用于数据集筛选,以保留与另一个数据集相关数据。

17610

R语言 常见函数知识点梳理与解析 | 精选分析

) 5、complete.cases( ) 判断对象是否数据完全 6、grep()找出所数据框中元素所在列值(仅数据框) 7、assign()通过变量名字符串来赋值 8、 split()根据因子变量拆分数据框...) 13、ls( )用来列出现存所有对象 常见函数列表 14、数据管理相关 15、字符串处理函数 16、因子 17、数学计算 18、数组相关 19、逻辑运算 20、控制结构相关 21、自定义函数相关...22、输入输出 23、工作环境 24、简单统计量 25、时间序列 【往期回顾】 R语言 | 第一部分:数据预处理 R语言|第2讲:生成数据 R语言常用数据输入与输出方法 | 第三讲 R语言数据管理与...:取子串 format,format C:把对象用格式转换为字符串 paste,strsplit:连接或拆分 charmatch,pmatch:字符串匹配 grep,sub,gsub:模式匹配与替换...window:时间窗 说明:本文中前半部分内容为作者自行整理,后半部分内容引自网络,稍作整理(蓝色标记部分是笔者认为比较常见和使用函数)。

2.3K21

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

接「R」数据操作(一)和「R」数据操作(二) 使用data.table包操作数据 data.table包提供了一个加强版data.frame,它运行效率极高,而且能够处理适合内存大数据集,它使用[]...data.table和data.frame,也就是说data.table继承了data.frame一些行为,但增强了其他部分。...对数据进行分组汇总 by是data.table另一个重要参数(即方括号内第3个参数),它可以将数据按照by值进行分组,并对分组计算第2个参数。...我们不仅可以直接使用列,也可以提前定义注入.N、.I和.SD来指代数据重要部分。...(year = year(date))] } 这里我们使用.SD[[x]]提取x列值,这跟通过名字从列表中提取成分或元素相同。

6K20

生信技能树 数据框data.frame练习1

R语言用于生信分析时最常用且最重要两种数据类型,编程语言还是需要多练,熟能生巧,没别的捷径,学了不用也就忘了。...题目链接:https://www.r-exercises.com/2016/01/04/data-frame-exercises/ 答案链接:https://www.r-exercises.com/2016...自己答案 dfstate=data.frame(state.abb,state.area,state.division,state.region,row.names = state.name) #不会取字符串子集...(df) <- substr(names(df), 7, 9) 分析 substr函数取字符串子集,学习一下 Exercise 10 Add the previous data frame column-wise...0,1,2,3四个数将0-3分成了三个区间,include.lowest代表左边值取不取,right表示右边值取不取,意思就是数学左开右闭/左闭右开区间。最后labels就是分三级。

64640

十二、R语言综合应用

生信技能树学习之R语言综合应用 一、玩转字符串 图片 x <- "The birch canoe slid on the smooth planks." x [1] "The birch canoe...需要对列表子集后,才能进行下一步计算,取子集代码是第二句,返回结果是向量,结果如下: [1] "The" "birch" "canoe" "slid" "on" "the...# 对列表/向量每个元素(向量)实施相同操作 test <- list(x = 36:33,y = 32:35,z = 30:27);test #返回值是列表,对列表每个元素(向量)求均值(...)对左边表取子集,取右边表存在子集 anti_join(test1,test2,by="name") ###反连接,左边表里在右边表里没有的会被留下来。...#是b下标,可以给b取子集,也可以给与b对应其他向量取子集

3.1K30

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

数据框数据框创建数据框来源主要包括用代码新建(data.frame),由已有数据转换或处理得到(取子集、运算、合并等操作),读取表格文件(read.csv,read.table等)及R语言内置数据函数...csv打开会报错,该知识点用于防止部分代码错误应用csv套用tsv等#文件读写部分(文件位于R_02Rproject)#1.读取ex1.txt txt用read.table读,变量名不需要有"",...#ex2 <- read.csv("ex2.csv") #读入该文件后会发现原文件第一列被错误当作数据而非行名,且列名.变成了-,R语言将列名特殊字符-转化了,该编号可能与其他数据编号无法匹配,ex2...dplyr包函数test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'), blood_type...#取子集方法同数据框t(m) #转置行与列,数据框转置后为矩阵as.data.frame(m) #将矩阵转换为数据框列表列表内有多个数据框或矩阵,可通过list函数将其组成一个列表l <- list(m1

7.7K00

R语言数据集合并、数据增减、不等长合并

(ink1,ink2,by="id",all=F) #默认,只取两者共有的部分 id R M 1 1 9 7 2 2 7 2 其中,all=T代表全连接,all.x=T代表左联结;all.y...=T代表右连接 2、dplyr包 dplyr包数据合并, 一般用left_join(x,y,by="name") 以x为主,y匹配都放进来, 但,y没有的则不放过来。...命令是让这两个向量粘合在一起生成新字符串向量,粘合后新字符之间没有间隔。...相比来说,其他一些方法要好一些,有dplyr,sqldfunion 5、sqldf包 利用SQL语句来写,进行数据合并,适合数据库熟悉的人,可参考: R语言︱ 数据库SQL-R连接与SQL语句执行...包rbind.fill函数(合并数据,必须是data.frame),do.call可以用来批量执行。

13.1K12

Day07 生信马拉松-数据整理R

(x) # 引号内单个字母/数字/符号数量 length(x) #检测向量内元素数 1.2 字符串拆分 str_split(x," ") #直接拆分后会变成list子集 class(str_split...#判断x2T开头字符串,输出逻辑向量 str_ends(x2,"e") #判断x2e结尾字符串,输出逻辑向量 1.5 字符串替换 x2 str_replace(x2,"o","A") #每个元素里面只替换第一次出现目标字符...,by="name") #反连接 基本不用 6.表达矩阵画箱线图 6.1操作过程图示 step1 对matrix进行转置:使gene名变为列名,将样本名转化为data.frame第一列 ggplot2...dat = t(exp) %>% #将matrix进行行列转置 as.data.frame() %>% #将matrix转为data.frame rownames_to_column() %...#是b下标,可以给b取子集,也可以给与b对应其他向量取子集

21800

2023.4生信马拉松day7-R语言综合应用

str_length(x) length(x) 2. str_split(字符串,"拆分符号") 拆分字符串 图片 -(1)拆分之后成为了了列表列表每个元素对应原来每个元素拆分结果 -(2)列表使用不方便...3. str_sub() 按位置提取字符串子集 str_sub(x,5,9) #提取x第5到9个字符 4. str_detect() 字符串检测【重要】 -(1)判断每个字符串含不含有某个字母或者多个字母组合...; -(2)判断之后得到一个与x2相等逻辑值向量; -(3)可以用来做“根据逻辑值提取x子集”; str_detect(x2,"h") #判断x每个字符串含不含有某个字母或者多个字母组合; str_starts...如何挑出30个数里最大五个 -(1)排序 -(2)取最后五个 图片 3.向量/列表隐式循环-lapply() 对列表/向量每个元素实施相同操作 lapply(1:4,rnorm) #批量画图...<- data.frame(name = c('jimmy','nicker','Damon','Sophie'), blood_type = c("A","

3.6K80

R数据科学整洁之道:使用 tibble 实现简单数据框

可以在 tibble 中使用R 无效变量名称(即不符合语法名称)作为列名称。例如, 列名称可以不以字母开头,也可以包含特殊字符(如空格)。...使用方法主要有两处不同:打印和取子集。...[['x']] ## [1] 0.8070801 0.1610041 0.3952444 0.1384965 0.5667709 与 data.frame 相比,tibble 更严格:它不能进行部分匹配...最后总结 tibble 相对于数据框来说,更简单,但更方便使用,两者主要区别是: tibble 不能创建行名。 tibble 不能改变输入类型(例如,不能将字符串转换为因子)、变量名称。...tibble 不能进行部分匹配,如果想要访问列不存在,它会生成一条警告信息。 tibble 打印时更美观。

1.7K10

从零开始异世界生信学习 R语言部分 06 R应用专题

list,使用下标循环,可以将每次循环结果都保存到列表 ## cbind 按列拼接 a = rnorm(10) b = 1:10 cbind(a,b) ##do.call() 函数是对列表 list...操作函数,批量操作 图片 图片 分批次将运行结果保存为R.data格式便于管理数据 图片 大段代码暂时不运行可以进行折叠,并加入一个if 判断或者注释掉 表达矩阵箱线图 表达矩阵 R 语言作图要求将宽数据表达矩阵转变成长数据后昨天...test <- list(x = 36:33,y = 32:35,z = 30:27);test #返回值是列表,对列表每个元素(向量)求均值(试试方差var,分位数quantile) lapply...(test1,test2,by="name") ##右连接,以右侧行为准构成新数据框(第二个写数据框),左表多余数据舍去 full_join(test1,test2,by="name")...##取全集 semi_join(test1,test2,by="name") ##半连接,对左边表格取在右边表格住存在子集 anti_join(test1,test2,by="name") ##反连接

2.5K30

R语言︱list用法、批量读取、写出数据时用法

列表是一种特别的对象集合,它元素也由序号(下标)区分,但是各元素类型可 以是任意对象,不同元素不必是同一类型。元素本身允许是其它复杂数据类型,比如,列表 一个元素也允许是列表。...———————————————————————————————————————————————————————————————— list字符串型数据如何导出?...: unlist->变成向量 data.frame->变成序号+单词 as.chacter->单个文本 #list字符串型数据如何导出?...(Job_Pwordseg.ct[1]) #[1]"c(\"职位\", \"描述\", \"Android\", \"平台\", \"进行\") 变换得到了数据之后,又出现了问题: 如何将list那么子集合并...[1],Job_Pwordseg.ct[2]) 不等长合并时候,rbind.fill函数可以很好将数据进行合并,并且补齐没有匹配缺失值为NA。

17.4K52

从零开始异世界生信学习 R语言部分 02 数据结构之数据框、矩阵、列表

数据框 data.frame 数据框 约等于表格:1.数据框不是一个具体文件,只是R语言内部一个数据;2.数据框每一列只能有一种数据类型 图片 新建和读取数据框 #新建和读取数据框 df1 <- data.frame...sort表示按列排序 merge(test1,test3,by.x='name',by.y = 'NAME', all = T) #取两个表合集 #调整数据框顺序,可以用重新取子集方式 a...,"b","c") #加列名 m m[2,] #矩阵取子集不支持使用$ m[,1] m[2,3] m[2:3,1:2] m #矩阵重要函数 t(m) #行列转置,行变列,列变行,行名和列名都跟着变换...pheatmap::pheatmap(m,cluster_rows = F,cluster_cols = F) #调节函数参数,画出热图不聚类 图片 图片 列表新建和取子集 l <- list(m1...= matrix(1:9, nrow = 3), m2 = matrix(2:9, nrow = 2)) l l[[2]] #列表子集 l$m1 #列表元素有名字,可以用

1.8K20

生信课程note-3

class3数据框、矩阵和列表向量-一维:表格—二维 :matrix 矩阵-二维,只允许一种数据类型;data.frame数据框-二维,每列只允许一种数据类型。...#重点:数据框#1.数据框来源# (1)用代码新建# (2)由已有数据转换或处理得到# (3)读取表格文件 (对数据框操作)# (4)R语言内置数据 (可以直接使用数据框)heatmap(volcano...用于取子集逻辑值向量:与x对应,不必须由x生成。(例子即通过score为gene取子集)记住,==是等于意思,>-是赋值意思## 代码思维#如何取数据框最后一列?...","r2","r3","r4")#只修改某一行/列名colnames(df1)[2] <- "CHANGE"列名和行名都是向量#6.两个数据框连接test1 <- data.frame(name...(test1,test3,by.x = "name",by.y = "NAME")##### 矩阵和列表m <- matrix(1:9, nrow = 3)colnames(m) <- c("a","b

1.3K40

R语言数据处理——数据合并与追加

y以及x匹配行 data3<-right_join(x,y,by=c("Name"="name")) #(4)full_join(x,y,by=c("Name"="name")) :包含所以x、y...行 data4<-full_join(x,y,by=c("Name"="name")) #(5)semi_join(x, y) :包含x,在y中有匹配行,结果为x子集 data5<-semi_join...(x,y,by=c("Name"="name")) #(6)anti_join(x, y) :包含x,不匹配y行,结果为x子集,与semi_join相反 data6<-anti_join(x,y)...如果有点R语言基础同学,强烈建议将这些操作放在R操作,数据导入导出、长宽转换、横纵合并,只需修改一下代码路径、参数分分钟搞定。...我是一个比较懒、嫌麻烦但注重效率的人,很多关于数据处理上需求,如果能用简单方式解决(比如VBA、R或者效率函数),我都不会去选择安装插件或者外部软件,一方面太浪费时间,操作麻烦;另一方面,使用插件大多需要用菜单点选

4.8K90
领券