dplyr错误 - 当第一组全部为NA时,分组的ntile失败

时间:2016-04-12 04:19:04

标签: r dplyr

我注意到当我按组应用dplyr(v0.4.3)ntile函数,并且第一组中的所有值都是NA时,第三组中所有内容的结果也变为NA。这是一个奇怪的错误(?),只有当第一组是NA时才会发生。

下面的简单示例 - 预期的行为是,ntile将对组中的所有NA值进行排名" a"作为NA,但它也对组" c"作为NA,即使它不包含NA值。如果我将NA值移到group" b"该功能按预期工作。

x <- data.frame(group = rep(c("a","b","c","d"), 5), value = 1:20)
x$value <- ifelse(x$group == "a", NA, x$value)
x %>%
group_by(group) %>%
mutate(quintile = ntile(value, 5))

# Source: local data frame [20 x 3]
# Groups: group [4]
# 
#     group value quintile
#    (fctr) (int)    (int)
# 1       a    NA       NA
# 2       b     2        1
# 3       c     3       NA
# 4       d     4        1
# 5       a    NA       NA
# 6       b     6        2
# 7       c     7       NA
# 8       d     8        2
# 9       a    NA       NA
# 10      b    10        3
# 11      c    11       NA
# 12      d    12        3
# 13      a    NA       NA
# 14      b    14        4
# 15      c    15       NA
# 16      d    16        4
# 17      a    NA       NA
# 18      b    18        5
# 19      c    19       NA
# 20      d    20        5

对于背景,我是日期滞后的股票数据,它为第一个日期的所有值创建NA。然后,当我按日期对五分组进行分组时,排名功能无法正常工作。

非常感谢, Alex Ryer

1 个答案:

答案 0 :(得分:0)

这已在开发版per hadley's comment on the issue OP filed

中修复