Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Split one row into multiple rows [duplicate]

Tags:

dataframe

r

I have a column in a dataframe like the one below, each row contains multiple countries separated by ,

df <- data.frame(
                  countries = c(
                                "UK , Spain , Germany , Italy , Netherlands" , 
                                "UK , Canada , AUS , China" , 
                                "Spain , AUS , Italy , Russia"
                                )
                )

This is how data looks like

                   countries
1 UK , Spain , Germany , Italy , Netherland
2                 UK , Canada , AUS , China
3              Spain , AUS , Italy , Russia

How can we transform this to be something like below?

  countries
1   UK
2   Spain
3   Germany
4   Italy
5   Netherlands
6   UK
7   Canada
8   AUS
9   China
10  Spain
11  AUS
12  Italy
13  Russia
like image 691
Nader Hisham Avatar asked May 17 '15 06:05

Nader Hisham


2 Answers

You can use 'separate_rows' from "tidyr" package:

df = separate_rows(df,1,sep = ",")
like image 114
ALAKANANDA Avatar answered Sep 23 '22 07:09

ALAKANANDA


Just try:

data.frame(countries = unlist(strsplit(as.character(df$countries), " , ")))
like image 42
nicola Avatar answered Sep 22 '22 07:09

nicola