Maybe it would be better to consider all attributes? i.e. if all the attributes of the columns are identical, preserve them, otherwise drop (with a warning?). That would work for factors and for POSIXct (which have a tz attribute)