填充Birth.Year缺失值后计算Age列出现赋值错误的技术求助
错误原因解析
- 核心问题:
foo$Year - foo$Birth.Year生成了长度为0的空向量,但你的数据框foo有89051行,赋值时长度不匹配触发错误。 - 具体触发场景:
Start.Time转日期失败:as.Date(foo$Start.Time)因日期格式不兼容返回大量NA,后续format()和as.numeric()处理后,foo$Year变成空向量。用空向量做减法运算,结果自然为空,赋值给Age时就会报长度不匹配的错误。- 隐性类型异常:即便
which(is.na(foo))没输出结果,也不代表Year列是有效数值——比如Year列若为字符型空值,is.na()无法识别,但算术运算时会返回空向量。
- 快速验证步骤:
- 执行
length(foo$Year)和length(foo$Birth.Year),确认两者长度均为89051; - 执行
head(foo$Start.Time)检查日期格式,给as.Date()指定明确格式参数(如as.Date(foo$Start.Time, format = "%Y-%m-%d")),确保日期转换成功。
- 执行
内容的提问来源于stack exchange,提问作者Dan M
相关产品推荐
相关产品推荐

