何时选择字符而不是 R 中的因子?

数据挖掘 r 数据争吵
2022-02-21 07:33:25

我目前正在研究一个包含一个name属性的数据集,该属性代表一个人的名字。使用 读取 csv 文件后read.csv,变量factor默认为 ( stringsAsFactors=TRUE),级别约为 10k。由于name不反映任何组成员身份,我不确定将其保留为factor.

有必要转换namecharacter吗?这样做(或不这样做)有什么好处吗?这还重要吗?

2个回答

因子存储为数字和水平表。如果您有分类数据,将其存储为一个因素可能会节省大量内存。

例如,如果您将长度为 1,000 的向量存储为字符,并且字符串的长度均为 100 个字符,则它将占用大约 100,000 个字节。如果将其存储为一个因子,则大约需要 8,000 个字节加上不同因子的长度之和。

与因子的比较也应该更快,因为通过比较数字而不是字符值来测试相等性。

当您想要添加新项目时,将其保留为角色的优势就来了,因为您现在正在更改级别。

将它们存储为对数据所代表的内容最有意义的任何内容。如果name不是分类的,而且听起来不是,那么使用字符。

对上述问题的几点思考:

  • 我发现这个关于 R 中因素的链接非常有用。
  • 如果你想创建一个分类模型,或者如果你想将字符转换为数字,则必须先将字符转换为因子:as.numeric(as.factor(name))。在您的情况下,可以用多于或少于 4 个字母或以特定字母开头的名称命名。
  • 如前所述,将字符转换为因子可以节省内存!

快乐编码!