2
Я пытаюсь преобразовать следующий код dplyr в эквивалент. Однако таблица данных, но не dplyr, дает мне ошибку.
Error: k <= n is not TRUE
.data.table дает ошибку Ошибка: k <= n не TRUE
#using dplyr
library(dplyr)
library(zoo) #rollmean function
DF<-mtcars
DF %>%
filter(cyl==6)%>%
group_by(am,vs) %>%
mutate(cumsum_mpg=cumsum(mpg),cummin_disp=cummin(disp),rollmean_wt=rollmean(wt,k=2,fill=0,align="right"))
#using data.table
library(data.table)
library(zoo) #rollmean function
DT<-data.table(mtcars)
setkey(DT,am,vs)
mynames<-c("cumsum_mpg","cummin_disp","rollmean_wt")
DT[,.SD[cyl==6] [,eval(mynames):=list(cumsum(mpg),cummin(disp),rollmean(wt,k=2,fill=0,align="right"))],by=.(am,vs)]
Спасибо @akrun. В своем втором решении вы можете объяснить, что означает 'J (6)'? Это 'cyl == 6'? – Metrics
@Metrics Мы задаем ключ 'cyl' и' join' Это 'cyl == 6', но быстрее – akrun
Спасибо за разъяснение @akrun. – Metrics