使用带有类别的 dplyr

tnt*_*tnt 1 r dplyr

我有一个数据集,其中包含不同地点不同物种的计数值。该数据集不包括对物种进行调查但未发现的地点(计数 = 0)。我尝试使用 dplyr Complete 函数来填写所有站点,但我不断收到以下错误消息:

Error: `by` can't contain join column `site %in% possibleSites` which is missing from RHS
Run Code Online (Sandbox Code Playgroud)

下面提供了一个示例数据集。

注意:我的实际数据包括其他信息,例如这些不同站点的纬度和经度、一天中的时间等,我还需要将其包含在最终数据集中。

species <- c(rep("A", 5), rep("B", 5), rep("C", 5))
site <- rep(sample(letters[1:10], 5, replace = FALSE), 3)
count <- sample(1:50, 15, replace = TRUE)

df <- data.frame(species, site, count)

possibleSites <- letters[1:10]

df %>% 
  complete(site %in% possibleSites,
           nesting(species),
           fill = list(count = 0))
Run Code Online (Sandbox Code Playgroud)

我将不胜感激帮助解决这个问题。

arg*_*t91 5

Are you looking for:

df %>% 
  complete(site = possibleSites, 
           species,
           fill = list(count = 0)
           )
Run Code Online (Sandbox Code Playgroud)

Output:

   site species count
1     a       A    19
2     a       B    10
3     a       C    44
4     b       A     0
5     b       B     0
6     b       C     0
7     c       A    44
8     c       B     1
9     c       C     7
10    d       A     0
11    d       B     0
12    d       C     0
13    e       A     0
14    e       B     0
15    e       C     0
16    f       A    40
17    f       B     5
18    f       C    20
19    g       A    25
20    g       B    12
21    g       C     9
22    h       A     0
23    h       B     0
24    h       C     0
25    i       A    47
26    i       B    33
27    i       C     4
28    j       A     0
29    j       B     0
30    j       C     0
Run Code Online (Sandbox Code Playgroud)