#r #tidyr #dplyr
#r #tidyr #dplyr
Вопрос:
У меня есть эти данные
df <- structure(list(
Replicate = c(1L, 1L, 3L, 3L),
VF = c(2, 2, 1.7, 1.95),
VI = c(2.15, 2.05, 1.7, 2.2)),
row.names = c(1L, 2L, 4L, 5L),
class = "data.frame")
Как я могу изменить эти данные, чтобы иметь обе выборки (VI и VF) с копиями в столбцах? Я хочу VF_Rep1 VF_Rep3 VI_Rep1 VI_Rep3
, чтобы мои новые столбцы.
Комментарии:
1. Вам нужно
df %>% gather(key, val, VF:VI) %>% group_by(Replicate, key) %>% mutate(rn = row_number()) %>% unite(RepK, key, Replicate) %>% spread(RepK, val)
2. @akrun Это работает! Спасибо
Ответ №1:
Мы gather
переводим столбцы ‘VF’, ‘VI’ в формат ‘long’, затем создаем последовательность, сгруппированную по ‘Replicate’, ‘key’, и spread
возвращаем ее в формат ‘wide’
library(tidyverse)
df %>%
gather(key, val, VF:VI) %>%
group_by(Replicate = paste0("Rep", Replicate), key) %>%
mutate(rn = row_number()) %>%
unite(RepK, key, Replicate) %>%
spread(RepK, val)