Это пример длинных данных формы, которые у меня есть:
ID value1 value2
1 4.333333 3.833333
1 4.333333 3.333333
2 4.583333 5.500000
2 3.916667 3.750000
3 4.500000 4.666667
3 4.333333 4.500000
Мне нужно преобразовать его в широкую форму, например:
ID value1A value1B value2A value2B
1 4.333333 3.833333 4.333333 3.833333
2 4.333333 3.333333 4.333333 3.833333
3 4.583333 5.500000 4.333333 3.833333
Чтобы выполнить это, используя аккуратный стих, я сделал следующее:
ds_spread <- gather(ds,condition, value, contains("value")) %>%
separate(condition, into = c("t1", "t2")) %>%
arrange(ID) %>%
group_by(ID) %>%
mutate(rownum = row_number()) %>%
select(-t1,-t2) %>%
spread(rownum, value)
В итоге я получил результат, который искал. Однако было ли это случайно? Нужно ли собирать%>% отдельный%>% упорядочить%>% mutate%>%? Есть ли более элегантное решение?