如何在R数据框中根据字符串匹配查找字符串列的列号?


数据框可能很长,并且包含仅包含字符串值的列以及数值列。在进行分析时,我们可能需要检查哪些列包含特定字符串值。例如,如果我们有一列字符串值为 A、B 和 C,并且我们想要检查哪个列包含值“A”,则可以使用 apply 函数,如下例所示。

示例

考虑以下数据框:

 在线演示

x1<-sample(LETTERS[1:4],20,replace=TRUE)
x2<-rpois(20,2)
df1<-data.frame(x1,x2)
df1

输出

  x1 x2
1  A 3
2  B 1
3  B 2
4  A 2
5  D 3
6  C 2
7  A 3
8  B 1
9  D 3
10 A 1
11 B 0
12 A 2
13 D 2
14 B 0
15 B 3
16 B 1
17 D 4
18 C 1
19 B 4
20 B 1

检查存在 A 的列:

示例

sapply(df1, function(x) any(x=="A"))

输出

 x1    x2
TRUE FALSE

此处,列 x1 的输出为 TRUE,因此列 x1 包含 A。

示例

 在线演示

y1<-rnorm(20)
y2<-sample(c("Rooh","Frank","Christina"),20,replace=TRUE)
df2<-data.frame(y1,y2)
df2

输出

      y1       y2
1 -1.05746268 Christina
2 -0.46353464 Rooh
3 -0.30686060 Rooh
4 0.22968835 Christina
5 0.36001582 Rooh
6 0.21773469 Christina
7 0.52068600 Christina
8 -0.28930238 Christina
9 2.75670872 Rooh
10 -0.70136439 Frank
11 1.49660551 Frank
12 0.02635582 Rooh
13 -2.20396449 Frank
14 0.82857546 Frank
15 0.36148329 Rooh
16 -0.82422499 Frank
17 -0.50081026 Rooh
18 -0.07842975 Christina
19 -1.19349053 Rooh
20 -0.55590686 Frank

检查存在 Rooh 的列:

示例

sapply(df2, function(x) any(x=="Rooh"))

输出

  y1   y2
FALSE TRUE

更新于:2020-12-08

339 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告