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

更新于: 2021年11月1日

7K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告