Вы можете использовать
clear_brand_name <- sub("^\\s*(\\S+(?:\\s+\\S+){2}).*", "\\1", brand_name)
См. Демоверсию regex . sub
найдет и заменит первое вхождение, которое соответствует шаблону.
Детали шаблона
^
- начало строки
\\s*
- 0+ пробелов
(\\S+(?:\\s+\\S+){2})
- Группа 1:
\\S+
- 1+ непробельных символов
(?:\\s+\\S+){2}
- два повторения 1+ пробелов и затем 1+ непробельных символов
.*
- остаток строки.
Все совпадение (вся строка) заменяется значением в группе 1 из-за \1
.