按观察次数过滤嵌套数据框
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]>
以下来自:
我想嵌套在多列上,然后根据嵌套到该行的项目数过滤掉行。例如,
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]>