change data.frame column into rows in R

前端 未结 2 1036
遇见更好的自我
遇见更好的自我 2020-12-29 05:08
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

I

相关标签:
2条回答
  • 2020-12-29 05:30

    If your dataframe is truly in that format, then all of your vectors will be character vectors. Or, you basically have a character matrix and you could do this:

    data.frame(t(df))
    

    It would be better, though, to just define it the way you want it from the get-go

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

    You could also do this

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

    If you wanted to give the columns names, you could do this

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

    Sometimes, if I use read.DIF of Excel data the data gets transposed. Is that how you got the original data in? If so, you can call

    read.DIF(filename, transpose = T)
    

    to get the data in the correct orientation.

    0 讨论(0)
  • 2020-12-29 05:37

    I really recommend data.table approach without manual steps becauce they are error-prone

    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
    

    Output

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

    0 讨论(0)
提交回复
热议问题