You need to loop through each option, splitting the values to find the group name to create. Something like this:
var prevGroup, $group = $();
$('#select_test option').remove().each(function() {
var $option = $(this),
values = $option.text().split(' - '),
group = values[0];
if (group != prevGroup) {
$group = $('<optgroup />', { label: group }).appendTo('#select_test');
}
$group.append($('<option />', {
text: values[1],
value: values[1]
}));
prevGroup = group;
});