<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_subset_riverid_index_list(self, river_id_list):
 """ Gets the subset riverid_list from the netcdf file Optional returns include the list of valid river ids in the dataset as well as a list of missing rive rids Parameters river_id_list: list or :obj:`numpy.array` Array of river ID's for the river segments you want the index of. Returns ------- :obj:`numpy.array` A sorted array of the river index in the NetCDF file that were found. :obj:`numpy.array` A sorted array of the river IDs that were found. list An array of the missing river ids. """

        netcdf_river_indices_list = []
        valid_river_ids = []
        missing_river_ids = []
        for river_id in river_id_list:
            # get where streamids are in netcdf file
            try:
                netcdf_river_indices_list \
                    .append(self.get_river_index(river_id))
                valid_river_ids.append(river_id)
            except IndexError:
                log("ReachID {0} not found in netCDF dataset."
                    " Skipping ...".format(river_id),
                    "WARNING")
                missing_river_ids.append(river_id)

        np_valid_river_indices_list = np.array(netcdf_river_indices_list)
        np_valid_river_ids = np.array(valid_river_ids)
        sorted_indexes = np.argsort(np_valid_river_indices_list)

        return(np_valid_river_indices_list[sorted_indexes],
               np_valid_river_ids[sorted_indexes],
               np.array(missing_river_ids))