С df ниже,
- необходимо вычислить медиану для переменной
metric
по командам tm1, tm2 и tm3 на основе комбинацииlocid
,day
,hour
затем отфильтруйте только те наблюдения
locid
,day
,hour
, которые имеют одинаковую медиануmetric
для командtm1
,tm2
,tm3
.set.seed(100) df <- data.frame( locid = sample(c(1111,1122,1133), 20, replace=TRUE), day = sample(c(1:3), 20, replace=TRUE), hour = sample(c(1:4), 20, replace=TRUE), team = sample(c("tm1", "tm2", "tm3"), 20, replace=TRUE), metric = sample(1:5, 20, replace=TRUE ) )
моя попытка
df_medians <- df %>%
group_by(locid + day + hour + team) %>%
summarise(metric_median = median(metric))
это дает median
за team
для каждого locid + day + hour
. Теперь мне нужно найти комбинации locid + day + hour
, которые дают одинаковое медианное значение для команд tm1
, tm2
, tm3
.
df_medians %>% group_by(locid, day, hour, team) %>% summarise(??what here??)
Я пробовал с dplyr, но с base-r все в порядке.
В качестве более простого примера мы можем взглянуть на приведенные ниже данные, в которых есть измерения из двух разных мест для двух команд.
+-------+------+-------+-------+---------+
| locid | day | hour | team | metric |
+-------+------+-------+-------+---------+
| 1111 | 1 | 1 | tm1 | 3 |
| 1111 | 1 | 1 | tm1 | 2 |
| 1111 | 1 | 1 | tm1 | 1 |
| 1111 | 1 | 1 | tm2 | 1 |
| 1111 | 1 | 1 | tm2 | 2 |
| 1111 | 1 | 1 | tm2 | 3 |
| 1122 | 1 | 1 | tm1 | 3 |
| 1122 | 1 | 1 | tm1 | 2 |
| 1122 | 1 | 1 | tm1 | 1 |
| 1122 | 1 | 1 | tm2 | 1 |
| 1122 | 1 | 1 | tm2 | 2 |
| 1122 | 1 | 1 | tm2 | 1 |
+-------+------+-------+-------+---------+
шаг 1 - вычислить медиану по группе
+-------+------+-------+-------+-------------+
| locid | day | hour | team | metric_med |
+-------+------+-------+-------+-------------+
| 1111 | 1 | 1 | tm1 | 2 |
| 1111 | 1 | 1 | tm2 | 2 |
| 1122 | 1 | 1 | tm1 | 2 |
| 1122 | 1 | 1 | tm2 | 1 |
+-------+------+-------+-------+-------------+
Шаг 2 — сравнить медианы по группе (locid + день + час) только (1111, 1, 1) имеет одинаковое значение metric_med для команд gp1 и gp2.
+-------+------+-------+-------------+
| locid | day | hour | metric_med |
+-------+------+-------+-------------+
| 1111 | 1 | 1 | 2 |
+-------+------+-------+-------------+