Kardu
Kardu

Reputation: 895

reshape data with dplyr package

Hy, I have this dataset and I want reshape the data.

> dvd
   ID          Item
1   1   Sixth Sense
2   1         LOTR1
3   1 Harry Potter1
4   1    Green Mile
5   1         LOTR2
6   2     Gladiator
7   2       Patriot
8   2    Braveheart
9   3         LOTR1
10  3         LOTR2
11  4     Gladiator
12  4       Patriot
13  4   Sixth Sense

I want put the data in this format.

#     ID                                               V1
#  1:  1 Sixth Sense,LOTR1,Harry Potter1,Green Mile,LOTR2
#  2:  2                     Gladiator,Patriot,Braveheart
#  3:  3                                      LOTR1,LOTR2
#  4:  4                    Gladiator,Patriot,Sixth Sense

I know that I can do this with data.table using this code

library(data.table)
as.data.table(DF)[, list(list(Item)), by = ID]

But I really want use dplyr package.. It's possible? I'm thinking all day about this and I cannot forget this problem and it's killing me :)

Many thanks for your help

Upvotes: 2

Views: 329

Answers (2)

Rorschach
Rorschach

Reputation: 32466

With the dev version of tidyr (install), it is simply

nest(DF, Item)

which would be

library(dplyr)
DF %>% group_by(ID) %>%
  summarise(Item = list(Item))

Upvotes: 2

Benjamin
Benjamin

Reputation: 17279

I would approach is like so:

DF %>%
  group_by(ID) %>%
  summarise(V1 = paste0(Item, collapse = ", "))

Upvotes: 1

Related Questions