Подмножество со всеми значениями для переменной в R - PullRequest
0 голосов
/ 24 мая 2019

У меня есть фрейм данных с переменной с другими значениями для другой переменной. Как это: DataFrame

Итак, мне нужно подмножество, когда значение S содержит все возможные значения B. В этом примере подмножество el соответствует S = a и S = ​​b:

Подмножество

Есть идеи? Спасибо !!

1 Ответ

0 голосов
/ 24 мая 2019

Можно сгруппировать по 'S' и filter строкам, имеющим all значения unique столбца 'B' %in% 'B'

library(dplyr)
un1 <- unique(df1$B)
df1 %>%
    group_by(S) %>%
    filter(all(un1 %in% B))
# A tibble: 8 x 2
# Groups:   S [2]
#  S         B
#  <fct> <dbl>
#1 a         1
#2 a         2
#3 a         3
#4 a         4
#5 d         1
#6 d         2
#7 d         3
#8 d         4

Или с data.table

library(data.table)
setDT(df1)[, .SD[all(un1 %in% B)], S]

Или используя base R

df1[with(df1, ave(B, S, FUN = function(x) all(un1 %in% x)) == 1),]

данные

df1 <- data.frame(S = rep(letters[1:4], c(4, 3, 2, 4)),
          B = c(1:4, c(1, 3, 4), 1:2, 1:4))
...