我有一个包含大量文本值(级别)的数据框列。我需要将这些值映射到预定义的类似对象的结构,以减少级别数。我可以在 Python 中使用字典轻松实现此目的,但无法使用 R 中的列表实现同样的目的。
例如,我的数据框列类似于:
df <- data.frame(weather = c('Clear','Snow','Clear','Rain','Rain','Other','Hail/sleet','Unknown'))
我需要将其映射到一个列表,例如
weather.levels <- list(
dry = c('Clear', 'Cloudy'),
wet = c('Snow', 'Rain', 'Hail/sleet'),
other = c('Other','Unknown'))
这样我转换后的数据框看起来像
old.weather new.weather
1 Clear dry
2 Snow wet
3 Clear dry
4 Rain wet
5 Rain wet
6 Other1 other
7 Hail/sleet wet
8 Unknown other
我看过类似的解决方案this https://stackoverflow.com/questions/28751879/how-to-map-a-column-through-a-dictionary-in-r and ,但这些并不能回答我的问题。我无法创建数据框来使用 Rmatch
函数因为预设字典的每个类别的级别数weather.levels
(“干”、“湿”、“其他”)是不同的。