当使用R包含某些字符串时选择行

时间:2015-10-13 16:59:19

标签: r

我的数据框如下:

Acct <- c(1001, 1002, 1003)
Tran <- c(01, 02, "ALL")
Group <- c(01, 01, 02)
DF1 <- data.frame(Acct, Tran, Group)

现在我需要选择&#34; ALL&#34;出现。结果应如下所示:

 Acct |  Tran  | Group
 1003 |   ALL  |  2

值得一提的是&#34; ALL&#34;可以在任何列中(不只是&#34; Tran&#34;)并且可能有任意数量的列。

2 个答案:

答案 0 :(得分:3)

您可以使用DF1 == "ALL"获取逻辑矩阵来查找ALL。然后我们可以取该矩阵的rowSums()并保留总和不为零的那些矩阵。

DF1[rowSums(DF1 == "ALL") != 0, ]
#   Acct Tran Group
# 3 1003  ALL     2

答案 1 :(得分:2)

使用此行:

apply(DF1 == "ALL",1,any)

这将导致T / F向量对应于包含至少一个“ALL”

的行

DF1 == "ALL"给出:

> DF1 == "ALL"
      Acct  Tran Group
[1,] FALSE FALSE FALSE
[2,] FALSE FALSE FALSE
[3,] FALSE  TRUE FALSE

通过使用apply,如上所述,您得到:

> apply(DF1 == "ALL",1,any)
[1] FALSE FALSE  TRUE

如果你想要行:

> select <- apply(DF1 == "ALL",1,any)
> DF1[select,]

  Acct Tran Group
3 1003  ALL     2