Вы пытались создать новый фрейм данных - я назову его tmp2
- где tmp2$label==substr(tmp$label,0,2)
? Оттуда вы можете, например, использовать tapply(tmp2$value1,tmp2$label,mean)
, чтобы получить средние значения value1
, агрегированные по tmp2$label
.
Опция, использующая dplyr
library(dplyr)
tmp %>%
group_by(label=sub('_.*$', '', label)) %>%
transmute(median1=median(value1), mean1=mean(value2))
Или data.table
library(data.table)
setDT(tmp)[, c('median1', 'mean1') := list(median(value1),
mean1= mean(value2)) , .(label=sub('_.*$', '', label))][, c(1,4:5),
with=FALSE]