过滤数据集,以便仅显示组织得更快的程序

时间:2019-06-06 09:01:52

标签: r filter

想象以下数据集(tabel = DT)

ID    Program   Year
ABC   xxx       2000
ABC   yyy       2001
ABC   zzz       2002
DEF   xxx       2000
DEF   zzz       2001
DEF   yyy       2002

我想过滤表格,以便仅出现与所选节目早或在同一年组织的节目的“唯一身份ID”(例如selection = yyy)

在这种情况下-当选择程序yyy时-这将给出以下输出

ID    Program   Year
ABC   xxx       2000
ABC   yyy       2001
DEF   xxx       2000
DEF   zzz       2001
DEF   yyy       2002

有人对要使用的R代码有想法吗?

2 个答案:

答案 0 :(得分:1)

使用dplyr可以group_by ID并找到索引,其中Program == "yyy"获得相应的Yearfilter具有{ {1}}比提取的要少。

Year

答案 1 :(得分:0)

按“ ID”分组后,我们可以使用=transpose (A2:R300)

slice

或使用library(dplyr) df %>% group_by(ID) %>% slice(which(Year <= Year[match("yyy", Program)])) # A tibble: 5 x 3 # Groups: ID [2] # ID Program Year # <chr> <chr> <int> #1 ABC xxx 2000 #2 ABC yyy 2001 #3 DEF xxx 2000 #4 DEF zzz 2001 #5 DEF yyy 2002

data.table

数据

library(data.table)
setDT(df)[, .SD[Year <= Year[match("yyy", Program)]], ID]