总结基于扩展网格类别的原始数据

问题描述 投票:0回答:1

我想用dplyr总结一个表。以下是我要继续的方式:

  • 我有一个像这样的data.frame:
 year    region week  site           species    gps_clutch
2017    sud   18     6                  au        337
2017    sud   20     10                 au        352
2017    sud   22     10                 au        352
2017    sud   24     10                 au        352
2017    sud   18     6                  aio       337
2017    sud   20     6                  aio       352
2017    sud   22     6                  au        352
2018    sud   20     6                  au        337
2018    sud   20     10                 au        352
2018    sud   22     10                 au        352
2018    sud   22     10                 aio       352
2018    sud   22     6                  au        352
2017    nor   19     5                  au        337
2017    nor   21     2                  au        352
2017    nor   23     5                  au        352
2017    nor   25     2                  au        352
2017    nor   19     5                  aio       337
2017    nor   25     5                  aio       352
2017    nor   19     5                  au        337
2018    nor   21     2                  aio       352
2018    nor   23     5                  aio        352
2018    nor   25     2                  au        352
2018    nor   23     5                  aio       337
2018    nor   23     5                  au       352
  • 我想计算每年,地区,地点,周的“gps_clutch”数量,并扩大每个地区记录的所有可能周数。我解释一下:在“sud”区域,我在第18周,第20周,第22周,第24周采样,并且在第19,21,23,25周的区域“也不”。我想将隐式缺失值转换为“0”,但仅限于已经采样的周(嵌套在地区)。我不希望以某种方式进行扩展,以便在第19周的区域“sud”中获得一排,因为该区域没有在特定周进行采样。

这段代码可以很好地扩展网格,如我所愿:

dat %>%
  group_by(region) %>%
  expand(year,site, species,week)

下面的代码也可以用来获取计数值,但不会按照我的意愿扩展网格(我只得到我每年观察一些事情的周数列表,而不是两年中采样的总周数)。这意味着如果在“sud”“2017”中我只有第20周和第22周的记录,那么网格将不会扩展到第18周和第24周:

field_subsetnord %>%
  group_by(year,region,site,species,week) %>%
  summarise(count_clutch=length(gps_clutch)) %>% 
  complete(week,nesting(year,sites,species), fill = list(count_clutch = 0))

这是我想在最后得到的表格:

 year    region week  site           species    count
2017     sud    18     6             au         1
2017     sud    20     6             au         0
2017     sud    22     6             au         1
2017     sud    24     6             au         0

2017     sud    18     6             aio        1
2017     sud    20     6             aio        1
2017     sud    22     6             aio        0
2017     sud    24     6             aio        0

2017     sud    18     10            au         0
2017     sud    20     10            au         1
2017     sud    22     10            au         1
2017     sud    24     10            au         1

2017     sud    18     10            aio        0
2017     sud    20     10            aio        0
2017     sud    22     10            aio        0
2017     sud    24     10            aio        0

2018     sud    18     6             au        0
2018     sud    20     6             au        1
2018     sud    22     6             au        1
2018     sud    24     6             au        0

2018     sud    18     6             aio       0
2018     sud    20     6             aio       0
2018     sud    22     6             aio       0 
2018     sud    24     6             aio       0

2018     sud    18     10            au        0
2018     sud    20     10            au        1
2018     sud    22     10            au        1
2018     sud    24     10            au        0

2018     sud    18     10            aio       0
2018     sud    20     10            aio       0
2018     sud    22     10            aio       1
2018     sud    24     10            aio       0

and so on for 2018...

任何建议混合这两个代码将不胜感激:)

r dplyr tidyr
1个回答
0
投票

你的两种方法非常接近。基本上他们只需要结合起来就能得到你想要的东西。 :)

按区域分组然后complete()首先是数据集,然后按所有变量和summarise()重新组合。由于gps_clutch现在将缺少值,您可以在!is.na语句中总结非缺失值(通过summarise())来计算离合器。

dat %>%
    group_by(region) %>%
    complete(year, site, species, week) %>% 
    group_by(year, region, site, species, week) %>%
    summarise(count_clutch = sum( !is.na(gps_clutch) ) )

# A tibble: 64 x 6
# Groups:   year, region, site, species [16]
    year region  site species  week count_clutch
   <int> <fct>  <int> <fct>   <int>        <int>
 1  2017 nor        2 aio        19            0
 2  2017 nor        2 aio        21            0
 3  2017 nor        2 aio        23            0
 4  2017 nor        2 aio        25            0
 5  2017 nor        2 au         19            0
 6  2017 nor        2 au         21            1
 7  2017 nor        2 au         23            0
 8  2017 nor        2 au         25            1
 9  2017 nor        5 aio        19            1
10  2017 nor        5 aio        21            0
# ... with 54 more rows
© www.soinside.com 2019 - 2024. All rights reserved.