2011-09-08 21 views

Odpowiedz

20

Jeśli dataframe jest naprawdę w tym formacie, a następnie wszystkich wektorów będą wektory postaci. Lub, w zasadzie mają matrycę znaków i można to zrobić:

data.frame(t(df)) 

Byłoby lepiej, choć po prostu zdefiniować ją tak, jak chcesz go z get-go

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

You może również zrobić to

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

Jeśli chciał podać nazwy kolumn, można zrobić to

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

Czasami, jeśli używam read.DIF danych Excela, dane zostają transponowane. Czy w ten sposób masz oryginalne dane? Jeśli tak, możesz zadzwonić pod numer

read.DIF(filename, transpose = T) 

, aby uzyskać dane we właściwej orientacji.

+0

Zrobiłem to, dzięki pewnemu gronie – Travis

+7

Powinienem był właśnie powiedzieć 'as.data.frame (t (df))'. Nie był w trybie "znaku". –

+0

bardzo mi pomogło! – greg121

1

Naprawdę polecam data.table podejście bez manualnych etapów becauce są one podatne na błędy

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 

Wyjście

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 (backporty)
OS: Debian 8.7

Powiązane problemy