This is a non-trivial problem because you are actually trying to compute means on a circular domain rather than an interval. There is whole field of Directional Statistics devoted to problems like this.
To be able to calculate a mean you need to choose a range for your angles, say [0°,360°]. If your data consists of 30° and 330°, and you take the mean of these numbers which gives (30°+330°)/2 = 180°, but intuitively the average of these two should be 0°. You can get around this by choosing your range carefully. Say take angles in the range [-180°, 180°] then our two data points become 30° and -30° giving a sensible mean of 0°.
The simplest thing is probably to calculate a mode of your data. Which direction occurs the most? This does not depend on the range you take. Indeed you would not need to calculate an angle at all. Just find which string "NNE", "SW" etc occurs the most.
If you want something a bit more sophisticated, then first take the mode, giving you a starting direction. Lets say "SSW" = 210° is the most common. Then choose your range to be 180° either side of this [30°,390°]. Take all angles in this range and calculate the mean. This still leaves the problem of what you do with a measurement in precisely the opposite direction. Do we class NNE as 30° or 390°? The simplest is to just reject this value.
A completely different approach is if you have wind speed data as well. So your data is like SSW, 3 mph. This becomes easier. Just map each reading to a point on the plane x = 3 cos(210°), y = 3 sin(210°), and take the average of these points. The result will be another point in the plane which you can convert back to speed and baring.
A prior SO question on the topic:
How do you calculate the average of a set of circular data?