0

I have data like this:

id word
1 bus
1 arrive
1 stop
1 time
1 beard
1 bearded
1 sits
2 whilst
2 argue
2 seat
2 time
2 police
3 officer
3 walks
3 intervenes

I want to convert it to a dataset like:

id word
1 arrive bus stop time beard bearded sits
2 whilst begin argue seat time
3 officer walks intervenes

Is it possible?

Thank you.

Hobo
  • 7,536
  • 5
  • 40
  • 50
ozgur
  • 17
  • 5
  • If you're happy to use the tidyverse packages, have a look at https://stackoverflow.com/a/38515351 – Hobo Jun 24 '21 at 11:10

1 Answers1

0

To add some detail to my comment:

library(dplyr)

data <- tibble::tribble(
  ~id,        ~word,
   1L,     "arrive",
   1L,        "bus",
   1L,       "stop",
   1L,       "time",
   1L,      "beard",
   1L,    "bearded",
   1L,       "sits",
   2L,     "whilst",
   2L,      "begin",
   2L,      "argue",
   2L,       "seat",
   2L,       "time",
   2L,     "police",
   3L,    "officer",
   3L,      "walks",
   3L, "intervenes"
  )

data %>% 
  group_by(id) %>% 
  mutate(word = paste0(word, collapse = " ")) %>% 
  slice(1) %>% # Take the first line from each group
  ungroup()

or better (so you don't need the slice):

data %>% 
  group_by(id) %>% 
  summarise(word = paste0(word, collapse = " "))
Hobo
  • 7,536
  • 5
  • 40
  • 50