I have a dataframe:
example <- data.frame(
Event = c('Negative_other 6',
'Negative_other_7',
'Neutral_self_1',
'Negative_other_6',
'Neutral_self 1',
'Negative_other_7'),
Type = c(1,2,2,1,2,2)
)
Some of the values in Event are inconsistently labelled. For example, ‘Negative_other_6’ and ‘Neutral_self_1’ sometimes has an underscore between ‘other’ and the number but sometimes not. Some other values are consistently labelled, like ‘Negative_other_7’ always has an underscore between ‘other’ and the number.
I want to update all the values in Event such that there is always an underscore between other and the number.
This is the desired output:
solution <- data.frame(
Event = c('Negative_other_6',
'Negative_other_7',
'Neutral_self_1',
'Negative_other_6',
'Neutral_self_1',
'Negative_other_7'),
Type = c(1,2,2,1,2,2)
)
Does anyone know an efficient way to do this?
Thank you!
>Solution :
You can use chatr (character translate from ' ' to _
transform(example, Event = chartr(" ", "_", Event))
Event Type
1 Negative_other_6 1
2 Negative_other_7 2
3 Neutral_self_1 2
4 Negative_other_6 1
5 Neutral_self_1 2
6 Negative_other_7 2
or even gsub for substituting ' ' to _
transform(example, Event = gsub(" ", "_", Event))
Event Type
1 Negative_other_6 1
2 Negative_other_7 2
3 Neutral_self_1 2
4 Negative_other_6 1
5 Neutral_self_1 2
6 Negative_other_7 2
Using tidyverse:
library(dplyr)
example %>%
mutate(Event = janitor::make_clean_names(Event))
Event Type
1 negative_other_6 1
2 negative_other_7 2
3 neutral_self_1 2
4 negative_other_6_2 1
5 neutral_self_1_2 2
6 negative_other_7_2 2