I do not think there is an easy way to do this via the Drupal Views interface.
However you can do it using jQuery or maybe CSS to hide all but the first instance of your repeating event.
Start off by creating a custom event option field to identify each type of event. You could even use the event type ID if you wanted and just add more options to it.
So it could be
- Jane's classes would have an ID of 1
- Joe's classes would have an ID of 2
So whatever you choose, each event will have an ID that identifies the type of event.
You can get these ID values into the View. Make sure you have Civicrm Entities module installed.
So now you have a view that shows say
Now you create a Row template for the View
Now you wrap the row in a div and you add in a class to the div dynamically, from the event_type_id.
So something like
<?php $id = $fields['event_type_id']->raw;?>
<div class="event_type_<?php print $id;?>">
-----rest of the fields
</div>
If you inspect the output on the page, then each row for Jane's classes will be wrapped in this div
<div class="event_type_1">
for example.
jQuery solution
Now what you do is make yourself a Drupal module that adds a bit of jQuery for when the page has loaded.
It should have a function with a selector like this
$('event_type_1').slice(1).remove();
That would remove all but the first row of Jane's classes.
Or this selector could do it
$('event_type_1:not(first-child)').remove();
CSS solution
Add a class for the view using the Class option in Advanced section of Views admin for the view display.
Then try
.view-class-added > event_type_1:not(:first-child) {
display: none;
}