У меня есть такой фрейм данных:
levels<- c("level 1", "LEVEL 1", "Level 1 ", "Level I", "Level I ",
"level one", "Level one", "Level One", "Level 1")
df<- as.data.frame(levels)
> df
levels
1 level 1
2 LEVEL 1
3 Level 1 #this one has a space at the end.
4 Level I
5 Level I #this one also has a space at the end.
6 level one
7 Level one
8 Level One
9 Level 1 #this is the correct format I want.
Как вы можете видеть, некоторые из них в верхнем регистре, некоторые имеют пробел в конце, некоторые отмечают "1"
как число, как символы, и даже римскими цифрами.
Я знаю, что могу просто написать несколько строк с gsub()
, но я хотел найти менее утомительный способ решения этой проблемы.
Этот фрейм данных также включает в себя ту же проблему с уровнем 2 и уровнем 3 (например, "level 2", "level III ", "level II", "Level Two", "level three","Level TWO"
).Кроме того, эти данные также включают строки, которые не являются просто "level #", но другими строками, такими как "Level 1 with specifications", "Level 2 with specifications", "Level 3 with specifications", "Level 1 with others included", "Moderate", "Mild", "Severe", etc..
Я не хочу заменять строки, такие как ("Level 1 with specifications", "Level 2 with specifications", "Level 3 with specifications", "Level 1 with others included", "Moderate", "Mild", "Severe", etc..
), но хочузаменить все странно отформатированные уровни просто на «уровень 1», «уровень 2», «уровень 3».
Я пробовал это с использованием apply()
, для циклов с gsub()
.Тем не менее, ни один из них, кажется, не работает.Я думаю, что это может быть потому, что gsub()
не может взять список?
Я также хотел использовать регулярные выражения, чтобы получить шаблон, используя str_replace()
, но я не могу понять, как это сделать.Я никогда не использовал str_replace()
и плохо знаком с регулярными выражениями.
Есть идеи?