некоторые данные (взяты из https://www.r -bloggers.com / two-of-my-favourite-data-table-features /
# generate a small dataset
set.seed(1234)
smalldat <- data.frame(group1 = rep(1:2, each = 5),
group2 = rep(c('a','b'), times = 5),
x = rnorm(10))
# convert to data.frame to data.table
library(data.table)
smalldat <- data.table(smalldat)
# convert aggregated variable into raw data file
smalldat[, aggGroup1 := mean(x), by = group1]
# aggregate with 2 variables
smalldat[, aggGroup1.2 := mean(x), by = list(group1, group2)]
Output
## group1 group2 x aggGroup1 aggGroup1.2
## 1: 1 a -1.2071 -0.3524 0.1022
## 2: 1 b 0.2774 -0.3524 -1.0341
## 3: 1 a 1.0844 -0.3524 0.1022
## 4: 1 b -2.3457 -0.3524 -1.0341
## 5: 1 a 0.4291 -0.3524 0.1022
## 6: 2 b 0.5061 -0.4140 -0.3102
## 7: 2 a -0.5747 -0.4140 -0.5696
## 8: 2 b -0.5466 -0.4140 -0.3102
## 9: 2 a -0.5645 -0.4140 -0.5696
## 10: 2 b -0.8900 -0.4140 -0.3102
Как выбрать строки, гдеaggGroup1.2
имеет значение min
для group1
, сохраняя информацию group2
.
Результат должен выглядеть следующим образом:
group1 group2 aggGroup1.2
1 b -1.0341
2 a -0.5696
Я пытался сделатьэто с синтаксисом data.table, но не удалось ...