提取 R 数据框中列名中包含字符串的列。
r programmingserver side programmingprogramming
要提取 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