Стол переставления в R - PullRequest
       2

Стол переставления в R

0 голосов
/ 12 октября 2018

Мне было интересно, может ли кто-нибудь помочь мне взять стол, который настроен следующим образом:

Date   x    y    z  
5-3    12   43  23  
5-1    41   75  32  
9-5    21   43  60  

И создать новую таблицу в следующем формате:

Number  Letter  
  12       x  
  43       y  
  23       z  
  41       x  
  75       y  
 ...      ...  

Строки не нужно упорядочивать каким-либо конкретным способом, мне просто нужны все числовые значения в одном столбце и соответствующая им буква столбца (в исходной таблице) во втором столбце.Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Поскольку я не могу добавить комментарий к ответу @ Фрэнка, я публикую свой собственный.Это работает в базе R.

По сути, это то же самое, что и unpivot -ing-table.

Использование фрейма @ Frank's DF:

DF_new=stack(subset(DF, select = -Date))
names(DF_new) <- c("Number", "Letter")

Или однострочник:

DF_new=setNames(stack(subset(DF, select = -Date)),  c("Number", "Letter"))

Оба дают результат:

  Number Letter
1     12      x
2     41      x
3     21      x
4     43      y
5     75      y
6     43      y
7     23      z
8     32      z
9     60      z
0 голосов
/ 12 октября 2018

Вы можете использовать пакет reshape2:

> reshape2::melt(t(DF[, -1]), 
    varnames=c("Letter", "row"), 
    value.name = "Number")
  Letter row Number
1      x   1     12
2      y   1     43
3      z   1     23
4      x   2     41
5      y   2     75
6      z   2     32
7      x   3     21
8      y   3     43
9      z   3     60

Данные:

DF = structure(list(Date = c("5-3", "5-1", "9-5"), x = c(12L, 41L, 
21L), y = c(43L, 75L, 43L), z = c(23L, 32L, 60L)), .Names = c("Date", 
"x", "y", "z"), row.names = c(NA, -3L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...