首页 > 解决方案 > 使用 tidyverse 在 R 中对数据进行分组和嵌套会产生错误

问题描述

我正在尝试为一些动物跟踪数据计算一些家庭范围估计。为此,amt 包的作者建议按 ID 分组,然后嵌套

但是当我这样做时,我收到以下错误:

错误:该groups属性不是最后一列名为 的数据框.rows

这是一个重现错误的示例:

library(amt)
library(tidyverse)

    data(deer)
    mini_deer <- deer[1:100, ]
    nesttrk <- mini_deer %>% group_by(burst_) %>% 
      nest() 
    nesttrk

总体目标是获得每个 ID 的归属范围大小估计(或在这种情况下为 burst_)

mini_deer %>% group_by(burst_) %>%  nest(-burst_) %>%
  mutate(mcparea = map(data, ~ hr_mcp(., levels = c(0.95)) %>% hr_area)) %>%
  dplyr::select(burst_, mcparea) %>% unnest()

标签: rdataframetidyverse

解决方案


我们可以先使用nest_by自身mutate,然后unnest使用list

library(amt)
library(dplyr)
library(tidyr)
mini_deer %>% 
    nest_by(burst_) %>%
    transmute(mcparea = list(hr_mcp(data, levels = 0.95) %>% 
                  hr_area))  %>% 
    ungroup %>%
    unnest(mcparea)
# A tibble: 5 x 4
  burst_ level what         area
   <dbl> <dbl> <chr>       <dbl>
1      1  0.95 estimate  180927.
2      2  0.95 estimate 1886603.
3      3  0.95 estimate       0 
4      4  0.95 estimate       0 
5      5  0.95 estimate   14476.

推荐阅读