Как изменить данные в R, чтобы обернуть реплики вместе - PullRequest
1 голос
/ 15 апреля 2019

У меня есть эти данные

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 Ответ

1 голос
/ 15 апреля 2019

Мы 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)
...