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