Collapse columns by grouping variable (in base)

后端 未结 2 1402
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-20 19:42

I have a text variable and a grouping variable. I\'d like to collapse the text variable into one string per row (combine) by factor. So as long as the group column says

2条回答
  •  梦毁少年i
    2021-01-20 20:12

    This makes use of rle to create an id to group the sentences on. It uses tapply along with paste to bring the output together

    ## Your example data
    dat <- structure(list(text = c("Computer is fun. Not too fun.", "No its not, its dumb.", 
    "How can we be certain?", "There is no way.", "I distrust you.", 
    "What are you talking about?", "Shall we move on?  Good then.", 
    "Im hungry.  Lets eat.  You already?"), group = structure(c(2L, 
    2L, 1L, 2L, 2L, 1L, 1L, 2L), .Label = c("f", "m"), class = "factor")), .Names = c("text", 
    "group"), row.names = c(NA, 8L), class = "data.frame")
    
    
    # Needed for later
    k <- rle(as.numeric(dat$group))
    # Create a grouping vector
    id <- rep(seq_along(k$len), k$len)
    # Combine the text in the desired manner
    out <- tapply(dat$text, id, paste, collapse = " ")
    # Bring it together into a data frame
    answer <- data.frame(text = out, group = levels(dat$group)[k$val])
    

提交回复
热议问题