изменить столбец data.frame на строки в R - PullRequest
20 голосов
/ 08 сентября 2011
A <- c(1,6)
B <- c(2,7)
C <- c(3,8)
D <- c(4,9)
E <- c(5,0)
df <- data.frame(A,B,C,D,E)
df
  A B C D E
1 1 2 3 4 5
2 6 7 8 9 0

Я хотел бы иметь это:

df
   1  2
A  1  6 
B  2  7
C  3  8
D  4  9    
E  5  0

Ответы [ 2 ]

23 голосов
/ 08 сентября 2011

Если ваш фрейм данных действительно в этом формате, то все ваши векторы будут символьными векторами.Или, в основном, у вас есть матрица символов, и вы можете сделать это:

data.frame(t(df))

Было бы лучше, тем не менее, просто определить ее так, как вы хотите, с самого начала

df <- data.frame(c('A','B','C','D','E'), 
                 c(1, 2, 3, 4, 5),
                 c(6, 7, 8, 9, 0))

Вы также можете сделать это

df <- data.frame(LETTERS[1:5], 1:5, c(6:9, 0))

Если вы хотите дать имена столбцам, вы можете сделать это

df <- data.frame(L = LETTERS[1:5], N1 = 1:5, N2 = c(6:9, 0))

Иногда, если я использую read.DIF данных Excelданные транспонируются.Так вы получили исходные данные?Если это так, вы можете позвонить

read.DIF(filename, transpose = T)

, чтобы получить данные в правильной ориентации.

3 голосов
/ 23 мая 2017

Я действительно рекомендую data.table подход без ручных шагов, поскольку они подвержены ошибкам

A <- c(1,6)
B <- c(2,7)
C <- c(3,8)
D <- c(4,9)
E <- c(5,0)
df <- data.frame(A,B,C,D,E)
df

library('data.table')
dat.m <- melt(as.data.table(df, keep.rownames = "Vars"), id.vars = "Vars") # https://stackoverflow.com/a/44128640/54964

dat.m

Вывод

  A B C D E
1 1 2 3 4 5
2 6 7 8 9 0
    Vars variable value
 1:    1        A     1
 2:    2        A     6
 3:    1        B     2
 4:    2        B     7
 5:    1        C     3
 6:    2        C     8
 7:    1        D     4
 8:    2        D     9
 9:    1        E     5
10:    2        E     0

R: 3.4.0 (backports)
ОС: Debian 8.7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...