Mam następujący problem, który ma prawdopodobnie całkiem proste rozwiązanie: Gdy używamdata.table GDZIE wcześniej przez
library (data.table)
actions = data.table(User_id = c("Carl","Carl","Carl","Lisa","Moe"),
category = c(1,1,2,2,1),
value= c(10,20,30,40,50))
User_id category value
1: Carl 1 10
2: Carl 1 20
3: Carl 2 30
4: Lisa 2 40
5: Moe 1 50
actions[category==1,sum(value),by= User_id]
Problem polega na tym, że najwyraźniej to pierwsze sortuje wiersze gdzie kategoria 1 a następnie używa polecenia by. Więc co mam to:
User_id V1
1: Carl 30
2: Moe 50
Ale co chcę jest:
User_id V1
1: Carl 30
2: Lisa 0
3: Moe 50
buduję data.table właśnie zawierający informacje o użytkownikach, tak:
users = actions[,User_id,by= User_id]
users$value_one = actions[category==1,.(value_one =sum(value)),by= User_id]$value_one
który zgłasza błędy lub zawiera błędne wartości, gdy niektórzy użytkownicy nie mają żadnych wpisów.
Można użyć 'działań [Sum (ifelse (kategoria == 1, value, 0)), przez = User_id] '. – nrussell
IIUC powiązane z [FR # 788] (https://github.com/Rdatatable/data.table/issues/788) – MichaelChirico