为什么Dplyr不尊重组_.drop=FALSE

为什么Dplyr不尊重组_.drop=FALSE,r,dplyr,R,Dplyr,我有一个非常简单的数据计数问题,我用两个字段(MktDate,Indexname)分组,这两个字段分别是date和chr类型。我有一些索引在某些日期没有数据,我希望我的代码能做的就是在这些日期包含一个0。我在dplyr的group_之后通过文档尝试了许多不同的解决方案,但我无法让这段短代码在没有数据时返回值0。这是我的密码 IdxStats <- IdxData %>% group_by(MktDate,IndexName,.drop=FALSE) %>% summ

我有一个非常简单的数据计数问题,我用两个字段(MktDate,Indexname)分组,这两个字段分别是date和chr类型。我有一些索引在某些日期没有数据,我希望我的代码能做的就是在这些日期包含一个0。我在dplyr的group_之后通过文档尝试了许多不同的解决方案,但我无法让这段短代码在没有数据时返回值0。这是我的密码

IdxStats <- IdxData %>% 
  group_by(MktDate,IndexName,.drop=FALSE) %>% 
  summarize(CountSecurity = length(MktDate)) %>% 
  ungroup
IdxStats%
分组依据(MktDate,IndexName,.drop=FALSE)%>%
汇总(CountSecurity=length(MktDate))%>%
解组

删除的.drop是正确的,但是当您使用length时,data.frame根本不存在,因此length就是它,这会很奇怪。请尝试以下操作:

set.seed(100)
IdxData = data.frame(MktDate=sample(1:3,10,replace=TRUE),
                     IndexName=sample(LETTERS[1:3],10,replace=TRUE))

IdxData %>% count(MktDate,IndexName,.drop=FALSE)
# A tibble: 9 x 3
  MktDate IndexName     n
    <int> <fct>     <int>
1       1 A             0
2       1 B             0
3       1 C             1
4       2 A             1
5       2 B             1
6       2 C             4
7       3 A             0
8       3 B             2
9       3 C             1

你好,用户1105887。欢迎来到StackOverflow!请阅读关于如何给予帮助的信息。这样你可以帮助别人帮助你!对不起,我认为代码应该足够简单,没有示例。我可以在几个小时内完成一些事情。谢谢。这个答案对我来说很有用,只需要一点小小的改变。我必须把我的日期和角色字段转换成因子。我不确定为什么这是必要的,但这是您提供的示例和我的用例之间的唯一区别。是的,您需要将其作为因素,以便它知道要在哪些方面制表。看,关于失踪月份的部分。很酷,很好,你发现了:)
IdxData %>% 
count(MktDate,IndexName,.drop=FALSE,name="CountSecurity")