包含向量中值的所有因子级别的子集数据帧

时间:2018-05-23 14:03:26

标签: r subset factors

我正在尝试在r中对data.frame进行子集化以获取包含特定列中向量中所有值的所有因子级别。 例如:

Beautiful is better than ugly

which looks like:

现在,向量是:dt=data.frame(fact=c(rep("a",3),rep("b",3),rep("c",3)),val=c(1,2,3,2,3,4,3,4,5)) 我希望函数只返回“a”,因为这个级别的'fact'在'val'列中包含1和2(级别“b”只包含值2,级别“c”不包含两个)。实际上,向量可以包含任意数量的元素。

看起来很基本但找不到答案,

2 个答案:

答案 0 :(得分:0)

我们通过'事实'做一个小组。和filter如果all' vec'价值在' val'柱

library(dplyr)
dt %>% 
  group_by(fact) %>% 
  filter(all(vec %in% val))
# A tibble: 3 x 2
# Groups:   fact [1]
#  fact    val
#  <fct> <dbl>
#1 a         1
#2 a         2
#3 a         3

答案 1 :(得分:0)

sapply(tapply(dt$val, dt$fact, `%in%`, x=vec), all)

给出

    a     b     c 
 TRUE FALSE FALSE 

以这种方式将此逻辑向量存储在一些新值中,例如keep和子集:

dtsub <- split(dt, dt$fact)[[keep]]