我注意到当我按组应用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