按观察次数过滤嵌套数据框

Filtering out nested data frames by number of observations

以下来自:

我想嵌套在多列上,然后根据嵌套到该行的项目数过滤掉行。例如,

df <- tibble(
  a = sample(x = c(rep(c('x','y'),4), 'w', 'z')),
  b = sample(c(1:10)),
  c = sample(c(91:100))
)

我想嵌套在 a 列上,如:

df_nest <- df %>% 
nest(-a)

然后,我想过滤掉数据列中只有 1 个观察值的行(在本例中,a = w 或 a = z。)我该怎么做?

您可以在data列上使用map/map_int到return每个嵌套tibble中的nrow,并以此为基础构造过滤条件:

df %>% 
    nest(-a) %>% 
    filter(map_int(data, nrow) == 1)
#   filter(map(data, nrow) == 1)        works as well

# A tibble: 2 x 2
#      a             data
#  <chr>           <list>
#1     w <tibble [1 x 2]>
#2     z <tibble [1 x 2]>