在嵌套数据框中使用带地图的函数

Using functions with map in nested data frames

我有一个包含 13 个组的嵌套数据框,每个组在数据列中包含 3 个变量。我想用唯一的 unhashed_id 消除观察结果,如下所示。

.x <- data_nest %>% pluck("data", 1) %>% group_by(unhashed_id) %>% filter(n()>1) %>% summarise(count=n()) %>% tally(count)
.x <- data_nest %>% pluck("data", 2) %>% group_by(unhashed_id) %>% filter(n()>1) %>% summarise(count=n()) %>% tally(count)

我如何使用地图对所有 14 个组执行此操作,而不是重复此过程 14 次?

这是我未嵌套的数据:

structure(list(geo_id = c("Atlanta", "Atlanta", "Atlanta", "Atlanta", "Atlanta", 
"Atlanta"), unhashed_id = c("002A7B15-E6CC-4771-9415-87D8DCC901EF", 
"01CC2CB4-6161-4667-923B-C9CE8F231333", "01CC2CB4-6161-4667-923B-C9CE8F231333", 
"01EAE8A9-4448-4BE5-8629-716B77D8BBE6", "01ED5B91-42D7-48E6-8DA5-92BD3CF15CE3", 
"01ED5B91-42D7-48E6-8DA5-92BD3CF15CE3"), date = structure(c(18214, 
17943, 18069, 18054, 18090, 18216), class = "Date"), dwell_time = c(4923, 
18000, 17601, 14400, 5005, 18011)), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))

我嵌套数据如下:

data_poi_nest <- data_poi3 %>% group_by(geo_id) %>% nest()

共有 13 个 geo_id 组。在每个组中,我想删除 unhashed_id 只出现一次的观察结果。

抱歉,我是论坛新人,正在学习论坛礼仪。谢谢!

这是一个开始的解决方案,我建议不要nest你的数据集,你group_split它然后bind_row你的所有子集:

library(dplyr)
library(purrr)


df2 %>% 
  group_split(geo_id) %>%
  map_dfr(~ .x %>% 
        group_by(unhashed_id) %>% 
          filter(n() > 1) %>% 
          summarise(count = n()) %>%
          tally(count)) 


# A tibble: 1 x 1
      n
  <int>
1     4

或者,如果您想坚持自己的解决方案(这也是一个很好的解决方案),您可以使用:

df2 %>% 
  group_by(geo_id) %>%
  nest() %>%
  mutate(data = map(data, ~ .x %>% 
                      group_by(unhashed_id) %>% 
                      filter(n() > 1) %>% 
                      summarise(count = n()) %>% 
                      tally(count))) %>%
  unnest(cols = data)

# A tibble: 1 x 2
# Groups:   geo_id [1]
  geo_id      n
  <chr>   <int>
1 Atlanta     4