Для каждой комбинации моих переменных simulation
и iteration
я бы хотел
- выяснить, имеет ли
group "a"
наибольшее значение rand1
, а также rand2
, - знать, связан ли
group "a"
с другой группой на основе rand1
, а также rand2
Некоторые образцы df (с жестко заданными значениями для rand1
и rand2
для воспроизводимости:
df = crossing(simulation = 1:3,
iteration = 1:3,
group =c("a","b","c")) %>%
mutate(rand1 = c(6,2,2,6,4,6, sample(6,21,replace=T)), # roundabout way to get the same head of df as in the example, forgot to use set.seed
rand2 = c(4,1,2,5,6,1,sample(6,21,replace=T)))
, что дает:
simulation iteration group rand1 rand2
1 1 a 6 4
1 1 b 2 1
1 1 c 2 2
1 2 a 6 5
1 2 b 4 6
1 2 c 6 1
Это то, что я хочу, чтобы мой вывод выглядел так: top.crit1
равно 1, если группа a равна max,0, если есть связь. ties.crit1
дает мне знать, был ли a связан для максимального значения с другой группой, то же самое для top.crit2
и ties.crit2
[не добавлено ниже, чтобы избежать беспорядка] Желаемый вывод:
simulation iteration group rand1 rand2 top.crit1 ties.crit1
1 1 a 6 4 1 0
1 1 b 2 1 1 0
1 1 c 2 2 1 0
1 2 a 6 5 0 1
1 2 b 4 6 0 1
1 2 c 6 1 0 1
Это мой код, который пока определяет только максимальное значение (но не учитывает связи), немного утомительно определять максимальное значение отдельно для rand1
и rand2
.
df.test = df %>%
group_by(simulation, iteration) %>%
slice(which.max(rand1)) %>%
mutate(top.crit1 = if_else(group=="a",1,0)) %>%
select(-rand2, -rand1, -group) %>%
full_join(., df)