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
J'aimerais avoir ceci:
df
1 2
A 1 6
B 2 7
C 3 8
D 4 9
E 5 0
Si votre trame de données est vraiment dans ce format, alors tous vos vecteurs seront des vecteurs de caractères. Ou, vous avez essentiellement une matrice de caractères et vous pouvez le faire:
data.frame(t(df))
Il serait préférable, cependant, de le définir comme vous le souhaitez dès le départ
df <- data.frame(c('A','B','C','D','E'),
c(1, 2, 3, 4, 5),
c(6, 7, 8, 9, 0))
Vous pouvez aussi faire ça
df <- data.frame(LETTERS[1:5], 1:5, c(6:9, 0))
Si vous vouliez donner des noms aux colonnes, vous pourriez le faire
df <- data.frame(L = LETTERS[1:5], N1 = 1:5, N2 = c(6:9, 0))
Parfois, si j'utilise read.DIF de données Excel, les données sont transposées. Est-ce ainsi que vous avez obtenu les données d'origine? Si oui, vous pouvez appeler
read.DIF(filename, transpose = T)
pour obtenir les données dans la bonne orientation.
Je recommande vraiment data.table
approche sans étapes manuelles car elles sont sujettes aux erreurs
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
Production
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 (rétroportages)
OS: Debian 8.7