为什么complete()在我的数据中创建重复的行?

时间:2018-02-01 23:05:56

标签: r tidyr

当我使用complete()函数填充我的数据中没有任何情况的行时,我发现它也创建了许多重复的行。可以使用unique()函数删除它们,但我想了解如何避免首先生成所有这些额外的行。

library(dplyr)
library(tidyr)

# An incomplete table
mtcars %>% 
  group_by(vs, cyl) %>% 
  count()

# complete() creates a table with many duplicate rows
temp <- 
  mtcars %>% 
  group_by(vs, cyl) %>% 
  count() %>% 
  complete(vs = c(0, 1), cyl = c(4, 6, 8), fill = list(n = 0)) 

unique(temp)

1 个答案:

答案 0 :(得分:5)

这在@aosmith的评论中得到回答。

重复项来自分组的数据。使用ungroup取消分组可以解决以下问题:

temp <- 
  mtcars %>% 
  group_by(vs, cyl) %>% 
  count() %>% 
  ungroup() %>%
  complete(vs = c(0, 1), cyl = c(4, 6, 8), fill = list(n = 0))