想象以下数据集(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代码有想法吗?
答案 0 :(得分:1)
使用dplyr
可以group_by
ID
并找到索引,其中Program == "yyy"
获得相应的Year
和filter
具有{ {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]