根据条件查找 R 数据框中的列名和行名。
要根据条件在R数据框中查找列名和行名,我们可以使用row.names和colnames函数。我们要查找行名称和列名称的条件可以在这些函数中定义,如下面的示例所示。
示例1
以下代码段创建了一个示例数据框-
x1<-rpois(20,1) x2<-rpois(20,8) x3<-rpois(20,20) df1<-data.frame(x1,x2,x3) df1
创建了以下数据框
x1 x2 x3 1 1 11 15 2 3 6 15 3 0 9 18 4 2 10 26 5 1 9 17 6 1 7 23 7 0 11 21 8 2 11 23 9 1 6 22 10 2 6 28 11 2 7 22 12 0 8 16 13 1 7 28 14 1 7 25 15 0 6 14 16 0 10 23 17 0 12 16 18 0 8 23 19 2 8 17 20 2 8 21
要在上面创建的数据框中查找哪些行的值为17,请将以下代码添加到上面的代码段中-
x1<-rpois(20,1) x2<-rpois(20,8) x3<-rpois(20,20) df1<-data.frame(x1,x2,x3) row.names(df1[which(df1==17,arr.ind=T)[,1],] )输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
[1] "5" "19"
要在上面创建的数据框中查找哪些列的值为17,请将以下代码添加到上面的代码段中-
x1<-rpois(20,1) x2<-rpois(20,8) x3<-rpois(20,20) df1<-data.frame(x1,x2,x3) colnames(df1)[apply(df1, 2, function(x) any(x==17))]输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
[1] "x3"
示例2
以下代码段创建了一个示例数据框-
y1<-sample(1:100,20) y2<-sample(1:100,20) y3<-sample(1:100,20) df2<-data.frame(y1,y2,y3) df2
创建了以下数据框
y1 y2 y3 1 75 52 32 2 37 5 46 3 43 31 60 4 100 30 11 5 28 18 79 6 31 80 53 7 8 85 49 8 62 38 56 9 48 82 15 10 97 48 69 11 69 25 40 12 12 92 21 13 77 55 26 14 39 95 63 15 82 61 75 16 98 40 14 17 61 78 22 18 93 63 58 19 10 21 17 20 2 68 83
要在上面创建的数据框中查找哪些行的值为92,请将以下代码添加到上面的代码段中-
y1<-sample(1:100,20) y2<-sample(1:100,20) y3<-sample(1:100,20) df2<-data.frame(y1,y2,y3) row.names(df2[which(df2==92,arr.ind=T)[,1],] )输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
[1] "12"
要在上面创建的数据框中查找哪些列的值为92,请将以下代码添加到上面的代码段中-
y1<-sample(1:100,20) y2<-sample(1:100,20) y3<-sample(1:100,20) df2<-data.frame(y1,y2,y3) colnames(df2)[apply(df2, 2, function(x) any(x==92))]输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
[1] "y2"