Вы всегда можете strsplit на '>' и извлекать элементы, которые хотите сохранить.
Ограничения: использует больше памяти, предполагает одинаковое количество '>' в каждой строке
data.table:
library(data.table)
setDT(df)
df[, tstrsplit(Entity, ' > ')][, .(two2three = V3, last = V14)]
# two2three last
# 1: EUROPE_lv3 SO362707
# 2: AMERICA_lv3 27747003lv14
# 3: AMERICA_lv3 76929017lv14
# 4: EUROPE_lv3 GB344496
# 5: AMERICA_lv3 94276002lv14
База:
df$Entity <- as.character(df$Entity)
setNames(
as.data.frame(
do.call(rbind, lapply(strsplit(df$Entity, ' > '), '[', c(3, 14)))
), c('two2three', 'last'))
# two2three last
# 1 EUROPE_lv3 SO362707
# 2 AMERICA_lv3 27747003lv14
# 3 AMERICA_lv3 76929017lv14
# 4 EUROPE_lv3 GB344496
# 5 AMERICA_lv3 94276002lv14