根据条件查找 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"
广告