Как изменить данные в R, чтобы объединить копии вместе

#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)