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

R 为什么complete()会在我的数据中创建重复的行?,r,tidyr,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 tem

当我使用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)
库(dplyr)
图书馆(tidyr)
#不完整的桌子
mtcars%>%
组别(对,共青团)%>%
计数()
#complete()创建一个包含许多重复行的表
温度%
组别(对,共青团)%>%
计数()%>%
完成(vs=c(0,1),气缸=c(4,6,8),填充=列表(n=0))
唯一(临时)

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

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

temp <- 
  mtcars %>% 
  group_by(vs, cyl) %>% 
  count() %>% 
  ungroup() %>%
  complete(vs = c(0, 1), cyl = c(4, 6, 8), fill = list(n = 0)) 
temp%
组别(对,共青团)%>%
计数()%>%
解组()%>%
完成(vs=c(0,1),气缸=c(4,6,8),填充=列表(n=0))

我认为这是因为您的数据集是分组的。在
complete
之前,尝试通过
ungroup
取消分组。可能有点相关。谢谢@aosmith,这确实是问题所在。