首页 文章资讯内容详情

使用 R 数据框的列名中的字符串提取列。

2026-06-02 1 花语

要在R数据框的列名中提取具有特定字符串的列,我们可以对列名使用grepl函数,然后使用单个方括号对数据框进行子集化。

例如,如果我们有一个名为df的数据框,并且我们想要提取名称中包含X的列,那么我们可以使用下面提到的命令-

df[grepl("X",colnames(df))]

示例1

以下代码段创建了一个示例数据框-

Students_Score<-sample(1:50,20) Teachers_Rank<-sample(1:5,20,replace=TRUE) Teachers_Score<-sample(1:50,20) df1<-data.frame(Students_Score,Teachers_Rank,Teachers_Score) df1

创建了以下数据框

Students_Score Teachers_Rank Teachers_Score 1 37 3 42 2 50 4 15 3 8 5 21 4 29 3 35 5 10 5 3 6 2 2 41 7 12 4 29 8 1 4 44 9 41 2 10 10 39 3 39 11 27 3 43 12 18 1 48 13 44 5 12 14 21 4 16 15 16 3 20 16 45 5 50 17 17 1 31 18 49 1 30 19 47 5 17 20 32 5 8

要提取在上面创建的数据框中的列名中包含Score的df1列,请将以下代码添加到上述代码段中-

Students_Score<-sample(1:50,20) Teachers_Rank<-sample(1:5,20,replace=TRUE) Teachers_Score<-sample(1:50,20) df1<-data.frame(Students_Score,Teachers_Rank,Teachers_Score) df1[grepl("Score",colnames(df1))]输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-

Students_Score Teachers_Score 1 37 42 2 50 15 3 8 21 4 29 35 5 10 3 6 2 41 7 12 29 8 1 44 9 41 10 10 39 39 11 27 43 12 18 48 13 44 12 14 21 16 15 16 20 16 45 50 17 17 31 18 49 30 19 47 17 20 32 8

示例2

以下代码段创建了一个示例数据框-

Hot_Temp<-sample(33:50,20,replace=TRUE) Cold_Temp<-sample(1:10,20,replace=TRUE) Group<-sample(c("First","Second","Third"),20,replace=TRUE) df2<-data.frame(Hot_Temp,Cold_Temp,Group) df2

创建了以下数据框

Hot_Temp Cold_Temp Group 1 47 4 Third 2 33 5 First 3 36 2 Second 4 35 8 Second 5 33 8 First 6 44 1 Third 7 33 8 Third 8 46 3 First 9 36 3 Third 10 44 6 First 11 43 10 Third 12 35 9 First 13 36 4 Third 14 44 5 Second 15 48 5 Second 16 37 6 Second 17 35 5 Second 18 42 4 First 19 40 4 Second 20 42 4 Third

要提取上面创建的数据框中列名中包含Temp的df2列,请将以下代码添加到上述代码段中-

Hot_Temp<-sample(33:50,20,replace=TRUE) Cold_Temp<-sample(1:10,20,replace=TRUE) Group<-sample(c("First","Second","Third"),20,replace=TRUE) df2<-data.frame(Hot_Temp,Cold_Temp,Group) df2[grepl("Temp",colnames(df2))]输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-

Hot_Temp Cold_Temp 1 47 4 2 33 5 3 36 2 4 35 8 5 33 8 6 44 1 7 33 8 8 46 3 9 36 3 10 44 6 11 43 10 12 35 9 13 36 4 14 44 5 15 48 5 16 37 6 17 35 5 18 42 4 19 40 4 20 42 4