Merging multiple rows into single row

后端 未结 2 1016
慢半拍i
慢半拍i 2021-01-16 04:26

I\'ve some problems with my data frame in R. My data frame looks something like this:

ID  TIME    DAY        URL_NAME      VALUE  TIME_SPEND
1    12:15  Mond         


        
2条回答
  •  别那么骄傲
    2021-01-16 04:37

    I'd recommend using dcast from the "data.table" package, which would allow you to reshape multiple measure variables at once.

    Example:

    library(data.table)
    as.data.table(mydf)[, dcast(.SD, ID ~ rowid(ID), value.var = names(mydf)[-1])]
    #    ID TIME_1 TIME_2 TIME_3   DAY_1   DAY_2    DAY_3 URL_NAME_1 URL_NAME_2 URL_NAME_3 VALUE_1 VALUE_2
    # 1:  1  12:15  13:15  15:00  Monday Tuesday Thursday       HOME  CUSTOMERS     PLANTS       4       5
    # 2:  2  14:15  10:19     NA Tuesday  Monday       NA  CUSTOMERS  CUSTOMERS         NA       2       9
    #    VALUE_3 TIME_SPEND_1 TIME_SPEND_2 TIME_SPEND_3
    # 1:       8           30           19           40
    # 2:      NA           21            8           NA
    

    Here's the sample data used:

    mydf <- data.frame(
      ID = c(1, 1, 1, 2, 2),
      TIME = c("12:15", "13:15", "15:00", "14:15", "10:19"),
      DAY = c("Monday", "Tuesday", "Thursday", "Tuesday", "Monday"),
      URL_NAME = c("HOME", "CUSTOMERS", "PLANTS", "CUSTOMERS", "CUSTOMERS"),
      VALUE = c(4, 5, 8, 2, 9),
      TIME_SPEND = c(30, 19, 40, 21, 8)
    )
    mydf
    #   ID  TIME      DAY  URL_NAME VALUE TIME_SPEND
    # 1  1 12:15   Monday      HOME     4         30
    # 2  1 13:15  Tuesday CUSTOMERS     5         19
    # 3  1 15:00 Thursday    PLANTS     8         40
    # 4  2 14:15  Tuesday CUSTOMERS     2         21
    # 5  2 10:19   Monday CUSTOMERS     9          8
    

提交回复
热议问题