Поворот повторяющихся мер в широкоформатный формат в R - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь сделать самый простой широкий круг возможных и не понимаю, как использовать dplyr :: pivot_wide или подобное. У меня есть фрейм данных, который выглядит как

X Y Z ...  K L
x1           l1
x2           l2
x3 .....     l3

, где x_i - значение копии i из X, и я хотел бы, чтобы он выглядел как

          X.1 X.2 X.3 Y.1 Y.2 Y.3
Value

(одна строка)

Это проще, чем любой пример использования в примерах, но я не могу понять византийский синтаксис. помощь!

Ответы [ 2 ]

1 голос
/ 17 января 2020

Сначала вам потребуется добавить ключевой столбец, чтобы однозначно идентифицировать исходный индекс строки каждого значения в новом фрейме данных из одной строки, а затем вызвать tidyr::pivot_wider().

library(tidyverse)

foo = data.frame(a = rnorm(3), b = rnorm(3), c = rnorm(3), d = rnorm(3))
foo %>% 
  mutate(key = 1:3) %>% 
  pivot_wider(names_from = key, values_from = a:d)

output

# A tibble: 1 x 12
    a_1    a_2    a_3    b_1   b_2    b_3    c_1   c_2   c_3    d_1   d_2    d_3
  <dbl>  <dbl>  <dbl>  <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl>  <dbl> <dbl>  <dbl>
1  1.23 -0.886 -0.313 -0.265  2.04 -0.239 -0.134 0.437  1.01 -0.292 -1.58 -0.498
1 голос
/ 17 января 2020

Вы пытаетесь просто unlist(df), но с некоторыми красивыми именами?

Как

my_names<-names(df)
df<-unlist(df)
names(df) <- paste0(repeat(my_names, 3),1:3,sep=".")

?

...