将字符型变量转换为数值型时,是否需删除强制转换产生的NA?
字符转数值生成的NA值是否需要删除?
不能直接一刀切决定删不删,核心是先搞清楚这些NA的来源:
先排查原字符变量里转失败的内容:在R里跑
data$var1[is.na(as.numeric(data$var1))],就能看到那些没法转成数值的字符到底是什么——是输入错误的乱码、字母,还是原本用来表示缺失值的标记(比如"无""NA""-"这类)?如果是输入错误(比如本该是数字却输成了"abc""12x"):优先尝试修正数据,比如找到原始数据源核对,实在没法修正的再考虑删除对应的样本,毕竟丢数据是下策。
如果是合法的缺失标记(比如原数据用特定字符表示无记录):转成NA是合理的,这时候删不删看后续分析需求:
- 要是你的分析方法要求完整样本(比如部分统计模型默认会自动剔除NA,但如果样本量本来就小,剔除后会严重影响结果),那可以考虑插补(比如用中位数、均值填充,或者用回归模型预测缺失值),而不是直接删;
- 要是NA占比极低(比如你这里34个NA,若总样本量上千),删除后对整体数据分布影响很小,那直接删也没问题。
总之,先找原因,再结合数据量、分析目标做决定,别上来就删。
内容的提问来源于stack exchange,提问作者sili
相关产品推荐
相关产品推荐

