如何从葡萄酒数据集title列提取年份并添加为整数列?
解决葡萄酒年份提取问题
我来帮你搞定这个从酒名里提取年份的需求~你的现有代码用了str_extract_all会返回所有数字的列表,而且没区分年份和短数字,我们可以从两个方向优化:
1. 精准匹配年份的正则表达式
葡萄酒年份一般是4位数字(19xx或20xx),所以我们可以用正则只匹配这类数字,排除像2、4这种短数字。用str_extract代替str_extract_all,因为每个酒名通常只有一个年份,这样返回的是字符向量而非列表,更适合直接作为数据框列。
正则表达式说明:
\\b:单词边界,确保我们匹配的是完整的4位数字,不会是其他字符串的一部分(19|20):限定年份以19或20开头,覆盖绝大多数常见的葡萄酒年份范围\\d{2}:匹配后面两位数字
2. 转换为整数列并添加到数据框
直接提取后转成整数类型,赋值给新列即可,不用转成列表。
完整代码示例:
library(stringr) # 提取符合格式的年份字符 wine_tidy2$vintage_year <- str_extract(wine_tidy2$title, "\\b(19|20)\\d{2}\\b") # 转换为整数类型 wine_tidy2$vintage_year <- as.integer(wine_tidy2$vintage_year)
特殊情况处理
如果有些酒名里没有年份,str_extract会返回NA,转成整数后还是NA,这样可以保留缺失值,方便你后续过滤或填充。
内容的提问来源于stack exchange,提问作者azmirfakkri
相关产品推荐
相关产品推荐

