Реорганизовать фрейм данных в R - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть кадр данных в R, который выглядит следующим образом:

A <- c(7,2,7)
B <- c(1,8,4)
C <- c(9,4,3)
Category <- c("A","B","C")

df <- data.frame(Category, A, B, C)

Фрейм данных выглядит следующим образом:

  Category | A | B | C
 -----------------------
     A       7   1   9
     B       2   8   4
     C       7   4   3

Как я могу реорганизовать фрейм данных в r, чтобы получить вывод ниже?

Category | Category | Value
---------------------------
    A         A         7    
    A         B         1
    A         C         9
    B         A         2
    B         B         8
    B         C         4
    C         A         7
    C         B         4
    C         C         3

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Один из способов сделать это - использовать tidverse, собирая данные, а затем, после их сбора, переименовывая столбец, чтобы иметь два столбца с одинаковым именем.

library(tidyr)
library(dplyr)

df %>% 
  gather(Category2, Value, -Category) %>% 
  arrange(Category, Category2) %>% 
  rename(Category=Category2)
0 голосов
/ 16 ноября 2018

Более простым вариантом будет транспонировать набор данных без первого столбца, затем изменить имя столбца на значения «Категория» и преобразовать в data.frame после присвоения атрибута table

as.data.frame.table(`colnames<-`(t(df[-1]), df$Category))[c(2, 1, 3)]
#   Var2 Var1 Freq
#1    A    A    7
#2    A    B    1
#3    A    C    9
#4    B    A    2
#5    B    B    8
#6    B    C    4
#7    C    A    7
#8    C    B    4
#9    C    C    3

Или используя melt после преобразования в matrix

library(reshape)
melt(as.matrix(`row.names<-`(df[-1], df$Category)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...