Ошибка dplyr с бэкэндом data.table [в dplyr 0.4.3 или более ранней версии]

Пока я просматривал ответы здесь , Я обнаружил, что это решение работает точно так же, как и ожидалось с data.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

4 голоса | спросил ExperimenteR 14 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 14 Sep 2015 19:18:03 +0300 2015, 19:18:03

1 ответ


0

Ошибка, которая приводит к удалению группировки после mutate в data.table был исправлен в версии 0.5.0 .

ответил Frank 14 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 14 Sep 2015 19:56:30 +0300 2015, 19:56:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132