如何查找满足多个条件的R列表的索引

时间:2014-04-17 15:30:47

标签: r list criteria subset indices

假设我在R中有以下数据框:

set.seed(5)
PosActions <- c("Work","Pause","Clockin","Clockout","Lunch")
df <- data.frame(ID = c(rep(1,3),rep(2:3,each=4),rep(4,5)), 
                 ACTION = sample(PosActions,16,replace=T))

返回

   ID   ACTION
1   1    Pause
2   1 Clockout
3   1    Lunch
4   2    Pause
5   2     Work
6   2 Clockout
7   2  Clockin
8   3    Lunch
9   3    Lunch
10  3     Work
11  3    Pause
12  4  Clockin
13  4    Pause
14  4  Clockin
15  4    Pause
16  4    Pause

在此数据框中,对应于ID == 2和ID == 3(第4行至第11行)的行包含字符串&#34;工作&#34;在ACTION栏中。我试图找到这些行的索引。在这种情况下:

 [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
[14] FALSE FALSE FALSE

换句话说,每当具有相同ID号的一组行包含&#34;工作&#34;在ACTION列中,必须返回此ID号的所有行索引。

我希望有人可以提前帮助我。

1 个答案:

答案 0 :(得分:4)

你的问题并不完全清楚。听起来你正在寻找以下内容:

> df$ID %in% df$ID[which(df$ACTION == "Work")]
 [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[11]  TRUE FALSE FALSE FALSE FALSE FALSE

一步一步:

## Which rows have "Work" in the "ACTION" column?
> which(df$ACTION == "Work")
[1]  5 10

## What's the corresponding "ID" value, so we can subset on that?
> df$ID[which(df$ACTION == "Work")]
[1] 2 3