Search code examples
rrows

How to reorder row values in R?


How may I reorder the values of rows alphabetically? If I have the following dataset:

    DOC      A                B                C               D
 1 Doc1    apple           coconut            berry           pear 
 2 Doc2    prune            apple            banana           berry
 3 Doc3  coconut           cherry             apple          banana
 4 Doc4    berry           banana             pear            prune

The desired subset output would be:

    DOC      A                B                C               D
 1 Doc1    apple            berry            coconut          pear 
 2 Doc2    apple            banana           berry            prune
 3 Doc3    apple            banana           cherry           coconut
 4 Doc4    banana           berry            pear             prune

Thanks in advance!


Solution

  • We can use sort with apply and MARGIN = 1

    df1[-1] <- t(apply(df1[-1], 1, sort))
    

    -output

    df1
    #   DOC      A      B       C       D
    #1 Doc1  apple  berry coconut    pear
    #2 Doc2  apple banana   berry   prune
    #3 Doc3  apple banana  cherry coconut
    #4 Doc4 banana  berry    pear   prune
    

    data

    df1 <- structure(list(DOC = c("Doc1", "Doc2", "Doc3", "Doc4"), A = c("apple", 
    "prune", "coconut", "berry"), B = c("coconut", "apple", "cherry", 
    "banana"), C = c("berry", "banana", "apple", "pear"), D = c("pear", 
    "berry", "banana", "prune")), class = "data.frame", row.names = c("1", 
    "2", "3", "4"))