[R] from matrix to data.frame
Marc Schwartz
marc_schwartz at comcast.net
Tue Jan 20 15:38:32 CET 2009
on 01/20/2009 08:10 AM Antje wrote:
> Hello,
>
> I have a question how to reshape a given matrix to a data frame.
>
> # ----------------------------------
>> a <- matrix(1:25, nrow=5)
>> a
> [,1] [,2] [,3] [,4] [,5]
> [1,] 1 6 11 16 21
> [2,] 2 7 12 17 22
> [3,] 3 8 13 18 23
> [4,] 4 9 14 19 24
> [5,] 5 10 15 20 25
>
>> colnames(a) <- LETTERS[1:5]
>> rownames(a) <- as.character(1:5)
>> a
> A B C D E
> 1 1 6 11 16 21
> 2 2 7 12 17 22
> 3 3 8 13 18 23
> 4 4 9 14 19 24
> 5 5 10 15 20 25
>
> # -----------------------------------
>
> This is an example on how my matrix looks like.
> Now, I'd like to reshape the data that I get a data frame with three
> columns:
>
> - the row name of the enty (X1)
> - the column name of the entry (X2)
> - the entry itself (X3)
>
> like:
>
> X1 X2 X3
> 1 A 1
> 2 A 2
> 3 A 3
> ....
> 1 B 6
> 2 B 7
> ....
> 5 E 25
>
> How would you solve this problem in an elegant way?
>
> Antje
See ?as.data.frame.table
DF.a <- as.data.frame.table(a)
colnames(DF.a) <- paste("X", 1:ncol(DF.a), sep = "")
> DF.a
X1 X2 X3
1 1 A 1
2 2 A 2
3 3 A 3
4 4 A 4
5 5 A 5
6 1 B 6
7 2 B 7
8 3 B 8
9 4 B 9
10 5 B 10
11 1 C 11
12 2 C 12
13 3 C 13
14 4 C 14
15 5 C 15
16 1 D 16
17 2 D 17
18 3 D 18
19 4 D 19
20 5 D 20
21 1 E 21
22 2 E 22
23 3 E 23
24 4 E 24
25 5 E 25
HTH,
Marc Schwartz
More information about the R-help
mailing list