gpt4 book ai didi

r - data.table 后端的 dplyr 错误 [在 dplyr 0.4.3 或更早版本中]

转载 作者:行者123 更新时间:2023-12-01 00:48:53 28 4
gpt4 key购买 nike

当我浏览答案时 here , 我找到了 this solutiondata.frame 完全符合预期.

library(dplyr) # dplyr_0.4.3  
library(data.table) # data.table_1.9.5
df <- structure(list(id = c(1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 3L),
a = c("AA",
"AB", "AA", "AB", "AB", "AB", "AB", "AA", "AA"), b = c(2L, 5L,
1L, 2L, 4L, 4L, 3L, 1L, 4L)), .Names = c("id", "a", "b"),
class = "data.frame", row.names = c(NA, -9L))


df %>%
group_by(id) %>%
mutate(relevance=+(a!='AA')) %>%
mutate(mean=cumsum(relevance * b) / cumsum(relevance))

Source: local data frame [9 x 5]
Groups: id [3]

id a b relevance mean
(int) (chr) (int) (int) (dbl)
1 1 AA 2 0 NaN
2 1 AB 5 1 5.0
3 1 AA 1 0 5.0
4 2 AB 2 1 2.0
5 2 AB 4 1 3.0
6 3 AB 4 1 4.0
7 3 AB 3 1 3.5
8 3 AA 1 0 3.5
9 3 AA 4 0 3.5

但是,当使用 data.table 运行时,这导致了我无法理解的事情。
setDT(df) %>%
group_by(id) %>%
mutate(relevance=+(a!='AA')) %>%
mutate(mean=cumsum(relevance * b) / cumsum(relevance))

Source: local data table [9 x 5]

id a b relevance mean
(int) (chr) (int) (int) (dbl)
1 1 AA 2 0 NaN
2 1 AB 5 1 5.000000
3 1 AA 1 0 5.000000
4 2 AB 2 1 3.500000
5 2 AB 4 1 3.666667
6 3 AB 4 1 3.750000
7 3 AB 3 1 3.600000
8 3 AA 1 0 3.600000
9 3 AA 4 0 3.600000

这是预期的行为吗?如果是这样,是否有关于何时不使用的指南 data.table后端与 dplyr ?

最佳答案

mutate后导致分组被丢弃的bug在数据表上 was resolved in 0.5.0 .

关于r - data.table 后端的 dplyr 错误 [在 dplyr 0.4.3 或更早版本中],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32569390/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com