user113156
user113156

Reputation: 7107

Move text at the end of the string to the beginning

I have some data which looks like:

                              NMUN
1      Cubo de Tierra del Vino, El
2                     Peraleja, La
3                       Franco, El
4  Pont de Vilomara i Rocafort, El
5                      Gabias, Las
6                       Adrada, La
7                          Bola, A
8                       Fayos, Los
9                     Recuenco, El

What I am trying to do is to move everything after the last comma to the beginning of the place.

Expected output:

NMUN
El Cubo de Tierra del Vino
La Peraleja
El Franco
El Pont de Vilomara i Rocafort
Las Gabias

Data

data = structure(list(NMUN = c("Cubo de Tierra del Vino, El", "Peraleja, La", 
"Franco, El", "Pont de Vilomara i Rocafort, El", "Gabias, Las", 
"Adrada, La", "Bola, A", "Fayos, Los", "Recuenco, El", "Pobra do Brollón, A", 
"Viso de San Juan, El", "Viso del Alcor, El", "Granjuela, La", 
"Bòrdes, Es", "Guingueta d'Àneu, La", "Villares, Los", "Grove, O", 
"Losar del Barco, El", "Iglesuela, La", "Vall de Bianya, La")), row.names = c(NA, 
-20L), class = "data.frame")

Upvotes: 0

Views: 40

Answers (2)

TarJae
TarJae

Reputation: 78927

Here is an alternative approach:

library(dplyr)
library(tidyr)

data %>% 
  separate(NMUN, c("NMUN", "a"), sep = ",") %>% 
  unite(NMUN, c(a, NMUN), sep = " ")
                              NMUN
1       El Cubo de Tierra del Vino
2                      La Peraleja
3                        El Franco
4   El Pont de Vilomara i Rocafort
5                       Las Gabias
6                        La Adrada
7                           A Bola
8                        Los Fayos
9                      El Recuenco
10              A Pobra do Brollón
11             El Viso de San Juan
12               El Viso del Alcor
13                    La Granjuela
14                       Es Bòrdes
15             La Guingueta d'Àneu
16                    Los Villares
17                         O Grove
18              El Losar del Barco
19                    La Iglesuela
20               La Vall de Bianya

Upvotes: 1

stefan
stefan

Reputation: 124213

Using gsub and a bit of regex you could do:

data$NMUN <- gsub("^(.*),\\s(.*)$", "\\2 \\1", data$NMUN)

data
#>                              NMUN
#> 1      El Cubo de Tierra del Vino
#> 2                     La Peraleja
#> 3                       El Franco
#> 4  El Pont de Vilomara i Rocafort
#> 5                      Las Gabias
#> 6                       La Adrada
#> 7                          A Bola
#> 8                       Los Fayos
#> 9                     El Recuenco
#> 10             A Pobra do Brollón
#> 11            El Viso de San Juan
#> 12              El Viso del Alcor
#> 13                   La Granjuela
#> 14                      Es Bòrdes
#> 15            La Guingueta d'Àneu
#> 16                   Los Villares
#> 17                        O Grove
#> 18             El Losar del Barco
#> 19                   La Iglesuela
#> 20              La Vall de Bianya

Upvotes: 3

Related Questions