问题描述
我有一个数据集,其中的结果变量是一个二元分类变量“诊断”,它是肿瘤的类型:“良性”或“恶性”。
将变量转换为数字(“良性”=0 和“恶性”=1)时,我使用以下代码:
tumor.df <- fread("df.csv",stringsAsFactors = T)
tumor.df$diagnosis = as.numeric(tumor.df$diagnosis,levels=c('benign','malignant'),labels=c(0,1))
但是,它不是将诊断转换为 0 和 1,而是转换为 1 和 2。 为什么会发生这种情况?
解决方法
因为 R 将因子存储为一组底层整数代码(从 1 开始)和一组相关标签。
我会说你应该从你得到的值中减去一个。还有许多其他方法可以进行转换,它们的效率和可读性各不相同。另一种选择是 as.numeric(tumor.df$diagnosis=="malignant")
(R 将 FALSE
转换为 0,TRUE
转换为 1)