Search code examples
rcsvmatrixdatasetsimplification

extract and format data from dataset into matrix in R


I want to make this dataframe

enter image description here

into this matrix

enter image description here

I have tried:

x <- read.csv("sample1.csv")

ax <- matrix(c(x[1,1],x[2,1],x[1,3],x[1,1],x[3,1],x[1,4],x[1,1],x[4,1],x[1,5],x[1,1],x[5,1],x[1,6],x[1,1],x[6,1],x[1,7],x[2,1],x[1,1],x[2,2],x[2,1],x[3,1],x[2,4],x[2,1],x[4,1],x[2,5],x[2,1],x[5,1],x[2,6],x[3,1],x[6,1],x[2,7],x[3,1],x[1,1],x[3,2],x[3,1],x[2,1],x[3,3],x[3,1],x[4,1],x[3,5],x[3,1],x[5,1],x[3,6],x[3,1],x[6,1],x[3,7],x[4,1],x[1,1],x[4,2],x[4,1],x[2,1],x[4,3],x[4,1],x[3,1],x[4,4],x[4,1],x[5,1],x[4,6],x[4,1],x[6,1],x[4,7],x[5,1],x[1,1],x[2,2],x[5,1],x[2,1],x[2,4],x[5,1],x[3,1],x[2,5],x[5,1],x[4,1],x[2,6],x[5,1],x[6,1],x[2,7],x[6,1],x[1,1],x[2,2],x[6,1],x[2,1],x[2,4],x[6,1],x[3,1],x[2,5],x[6,1],x[4,1],x[2,6],x[6,1],x[5,1],x[2,7]),10,3, byrow=TRUE)

bx <- ax[order(ax[,3], decreasing = TRUE),]

But it's not beautiful at all, and also it's gonna be lots of work if I got different sample data. So I wish to simplified it if possible, any suggestion?


Solution

  • This can be achieved by using melt() function from reshape2 package:

    > a = matrix(c(1:9), nrow = 3, ncol = 3, dimnames = list(LETTERS[1:3], letters[1:3]))
    > a
      a b c
    A 1 4 7
    B 2 5 8
    C 3 6 9
    > library(reshape2)
    > melt(a, na.rm = TRUE)
      Var1 Var2 value
    1    A    a     1
    2    B    a     2
    3    C    a     3
    4    A    b     4
    5    B    b     5
    6    C    b     6
    7    A    c     7
    8    B    c     8
    9    C    c     9