在R中如何将Excel数据集的性别因子取值从1、2修改为0、1
问题原因
你的代码核心错误是as.numeric()作用于因子类型时,默认读取的是因子的底层整数编码,而非你自定义的标签值。R语言中因子的底层编码固定从1开始计数,你将female设为第一个level、male设为第二个level,二者的底层编码始终对应1和2,哪怕你把标签修改为"0""1",转数值时取的还是底层编码,自然得不到预期的0、1结果。
正确实现方案
- 方案1:先提取因子的标签再转数值,适配你原本的写法
class(Dataset_A$gender) # 先构造自定义标签的因子,再转字符提取标签,最后转数值 Gender_numeric <- as.numeric(as.character(factor(Dataset_A$gender, levels = c("female", "male"), labels = c("0", "1")))) class(Gender_numeric) View(Gender_numeric)
- 方案2:用逻辑判断直接生成,写法更简洁
# 匹配male返回TRUE(转数值为1),female返回FALSE(转数值为0) Gender_numeric <- as.numeric(Dataset_A$gender == "male")
- 方案3:利用因子编码规律直接减1
如果你的原Dataset_A$gender已经是因子,且levels顺序为female在前、male在后,可以直接简化为:
Gender_numeric <- as.numeric(Dataset_A$gender) - 1
内容的提问来源于stack exchange,提问作者Danny
相关产品推荐
相关产品推荐

