如何基于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