【发布时间】:2019-08-16 19:50:52
【问题描述】:
我想用 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...
任何混合这两个代码的建议将不胜感激:)
【问题讨论】:
-
您可以指定
week = 18:24来指定应该扩展的值。从你得到的解释来看,我不完全确定这是否是你想要的。请以可重现的格式提供数据并包括所有样本(例如 18 代表 sud 不在您显示的数据中),从而使示例更具重现性 -
我刚刚相应地编辑了我的问题