Несоответствие имен столбцов в выходных данных data.table::dcast с одним или несколькими значениями.

Рассмотрим следующий пример data.table:

 dt = data.table(x=sample(5,20,TRUE), y=sample(2,20,TRUE), 
                 z=sample(letters[1:2], 20,TRUE), d1 = runif(20), d2=1L)

если мы бежим dcast как показано на странице справки:

dcast(dt, x + y ~ z, fun=sum, value.var=c("d1","d2"))

#   x y      d1_a      d1_b d2_a d2_b
#1: 1 1 2.6886652 0.8004916    5    1
#2: 1 2 1.1418996 0.0000000    3    0
#3: 2 1 0.2478359 0.0000000    1    0
#4: 2 2 0.0000000 0.2365897    0    1
#5: 3 2 0.0000000 0.5043686    0    2
#6: 4 1 0.5171290 1.7869604    1    2
#7: 5 1 0.8341936 1.2321818    1    2
#8: 5 2 0.6700292 0.0000000    1    0

Где имя столбцов значения является комбинацией столбцов value.var и значения в z, как и ожидалось: d1_a, d1_b, d2_a, d2_b,

Но если мы запустим один и тот же код только с одним столбцом в value.var:

dcast(dt, x + y ~ z, fun=sum, value.var=c("d2"))
#   x y a b
#1: 1 1 5 1
#2: 1 2 3 0
#3: 2 1 1 0
#4: 2 2 0 1
#5: 3 2 0 2
#6: 4 1 1 2
#7: 5 1 1 2
#8: 5 2 1 0

Имя столбцов нового значения происходит только от значения z а не из d2: a, b,

Это понятное поведение, но оно противоречит примеру, приведенному в перерисовке виньетки data.table (1, b) и в случае использования dcast функционировать программно внутри пакета с переменным числом value.var такое поведение не желательно.

Есть ли способ изменить это поведение?

0 ответов

Другие вопросы по тегам