如何在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
广告