美文网首页科研信息学
R语言排错之因子化(factor)的陷阱

R语言排错之因子化(factor)的陷阱

作者: 灵活胖子的进步之路 | 来源:发表于2020-12-13 13:03 被阅读0次

昨天帮同学跑数据,里面大部分都是字符型向量,只有少部分为连续向量,因此想通过apply函数吧读入的数据所有列内容先用factor变为因子向量,然后再用as.numerich函数结合apply函数把需要为数值型的向量再转回来,这样可以统一格式,代码如下

newdata<-read.csv("newdata.csv",header = T,check.names = F)
attach(newdata)
str(newdata)
读入数据原始结果
newdata[colnames(newdata)] <- lapply(newdata[colnames(newdata)],factor)
#利用apply函数将所有列内容因子话并展示
str(newdata)
所有列因子化
varsTonum <- c("CID","Age","bmi","stay","blood.transfusion","operation.duration")
#需要转回数值型变量的列向量
newdata[varsTonum] <- lapply(newdata[varsTonum],as.numeric)
#利用apply函数将其转回
str(newdata)
转回后数据结构

可以从转回后的数据结构看出,Age和bmi的数值和原来是不一样的,以Age为例,重新跑一次数据看Age的变化情况


转化前Age数值
转化后Age数值

数值改变的原因是因为数值转换为因子变量后,其数值本身就转变为了因子的秩次信息,再次转回数值型变量其本质是把因子的秩次转回,如下图,第2位44的levels位第4位,所以转回后期数值为4,不再是44了。


转为因子后的Age结构

解决方案

在读入文件时加上stringasfactor=F命令,并尽量不应用因子型向量

newdata<-read.csv("newdata.csv",
                  header = T,
                  check.names = F,
                  stringsAsFactors = F)

相关文章

  • R语言排错之因子化(factor)的陷阱

    昨天帮同学跑数据,里面大部分都是字符型向量,只有少部分为连续向量,因此想通过apply函数吧读入的数据所有列内容先...

  • 【R语言】因子在临床分组中的应用

    前面给大家简单介绍了 ☞【R语言】R中的因子(factor)[https://link.zhihu.com/?ta...

  • 【R语言】R中的因子(factor)

    R中的因子用于存储不同类别的数据,可以用来对数据进行分组,例如人的性别有男和女两个类别,根据年龄可以将人分为未成年...

  • R 学习笔记(5) -- 因子和表

    因子 因子 (factor) 是 R 语言中许多强大运算的基础,包括许多针对表格数据的运算。因子的设计思想来源于统...

  • R语言里面的因子

    R语言中的因子确实不好理解,很多人都这么觉得。在R语言中,因子(factor)表示的是一个符号、一个编号或者一个等...

  • R | factor 因子

    factor 因子 在R中数据的分类是用因子数据类型(factor)来表示的。如性别。 我们想按照status对患...

  • R-因子factor

    https://www.cnblogs.com/ljhdo/archive/2018/05/14/4911110....

  • R语言基础--数据类型-总结

    R语言基础--数据类型-总结 1、R语言基础--数据类型之向量 2、R语言基础--数据类型之因子 3、R语言基础-...

  • R语言factor最简单的理解

    最近正在学习R语言,碰到了因子factor,自己很不理解,网上找了很多的资料,可是感觉都说的很难,自己不是很理解,...

  • R数据结构之因子

    定义:类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。 函数factor()以一个整数向...

网友评论

    本文标题:R语言排错之因子化(factor)的陷阱

    本文链接:https://www.haomeiwen.com/subject/otougktx.html