根据扩展的网格类别汇总原始数据

时间:2019-03-26 12:18:37

标签: r dplyr tidyr

我想使用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周进行了采样,在“ nor”区域中,第19、21、23、25周中进行了采样。我想将隐式缺失值转换为“ 0”,但仅用于采样的周数(位于区域中)。我不想以这样的方式进行扩展,即我将在“ sud”区域中获得第19周的行,因为该区域没有在特定的一周进行采样。

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

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...

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

1 个答案:

答案 0 :(得分:0)

您与这两种方法都非常接近。本质上,只需要将它们组合在一起即可得到您想要的东西。 :)

按区域分组,然后<property environment="env" /> <property name="env.HOSTNAME" value="${env.COMPUTERNAME}" /> <property file="${user.name}-${env.HOSTNAME}-build.properties" /> <property file="${user.name}-build.properties" /> <property file="${basedir}/build.properties" /> 首先是数据集,然后按所有变量和complete()重新分组。由于summarise()现在将包含缺少的值,因此您可以在gps_clutch语句中总结非缺失值(通过!is.na)来计算离合器。

summarise()