Учитывая data.table
, как показано ниже, я хотел бы создать новый столбец, который является value
по сумме по региону и где period == 0
.data.table группа с условием фильтра
region period value
1: US 0 10
2: US 1 11
3: Japan 0 12
4: Japan 1 13
Типичный data.frame
подход к этому должен был бы создать отдельный кадр, фильтр по периоду, сумму по регионам, а затем объединить с оригиналом рамки с region
в качестве ключа. Мне интересно, есть ли однолинейный подход в data.table
с использованием синтаксиса группы data.table
. Ближе всего я пришел к двухлинейному подходу ниже.
x1 <- data.table(
region=c("US","US","Japan","Japan"),
period=c(0,1,0,1),
value=10:13)
x1[period==0,value0:=sum(value),by=region]
x1[,value0:=min(value0,na.rm=T),by=region]
region period value value0
1: US 0 10 10
2: US 1 11 10
3: Japan 0 12 12
4: Japan 1 13 12
Обратите внимание, что '.SD' еще не оптимизирован для' .SD [x ==.] '. Это будет намного медленнее (попробуйте увеличить данные). Кроме того, требование OP - 'sum', а не' mean' (IIUC). – Arun