2011-09-08 18 views

risposta

20

Se il dataframe è veramente in quel formato, allora tutti i vettori saranno vettori di caratteri. In alternativa, è fondamentalmente sono una matrice di carattere e si potrebbe fare questo:

data.frame(t(df)) 

Sarebbe meglio, però, a poco lo definiscono il modo in cui si desidera dal get-go

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

È potrebbe anche fare questo

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

Se si voleva dare i nomi delle colonne, si potrebbe fare questo

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

A volte, se uso read.DIF di dati Excel i dati vengono trasposti. È così che hai ottenuto i dati originali? Se è così, si può chiamare

read.DIF(filename, transpose = T) 

per ottenere i dati con l'orientamento corretto.

+0

L'ho fatto, grazie mille – Travis

+7

Dovrei aver appena detto 'as.data.frame (t (df))'. Non era in modalità "carattere". –

+0

mi ha aiutato molto! – greg121

1

Consiglio vivamente data.table approccio senza passaggi manuali becauce essi sono soggetti a errori

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 

uscita

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

Problemi correlati