使用 R 数据框的列名中的字符串提取列。
要在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