我的数据框如下:
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;)并且可能有任意数量的列。
答案 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