【问题标题】:R factor and levelR因子和水平
【发布时间】:2017-09-25 21:37:31
【问题描述】:

级别是有道理的,它是向量的唯一值,但我无法理解因子是什么。它似乎只是重复向量值。

factor(c(1,2,3,3,4,5,1))
[1] 1 2 3 3 4 5 1
Levels: 1 2 3 4 5

谁能解释一下应该做什么,或者我为什么要使用它?

我开始怀疑因子是否类似于数据库中的代码表。其中因子名称是代码表名称,级别是代码表的唯一选项。 ?

【问题讨论】:

  • 在拟合统计模型时,分类数据(因子)的处理方式通常与连续数据或数值数据截然不同。如果你不做那种事情,你可能根本不需要太多使用因子。
  • 我可以看到级别就像下拉列表中的唯一选项,但我仍然不了解因素
  • 它只是一个整数向量和一组“级别”,您可以将其视为整数映射到的内容。因此,例如,您可能有一个变量Gender,其值为MF。作为一个因素,这只是一个 1 和 2 的序列,其中 1 = F 和 2 = M。
  • 在控制台打印因子时,您通常只会看到级别,而不是底层整数代码。
  • 所以 factor 将标签含义应用于值?所以我会做类似 c(1,2) factor(c("Male","Female")) 的事情?

标签: r


【解决方案1】:

因子存储为哈希表而不是原始字符向量。这意味着什么?有两个主要好处。

  1. 内存占用小得多。考虑一个文本文件,其中包含以 ASCII 编码 100,000 倍以上的短语“New Jersey”。现在想象一下,如果您只需要存储数字 16(二进制 100,000 次,然后另一个表表明 16 表示“新泽西”。它更精简、更快。

  2. 特别是对于可视化和统计分析,我们经常测试“所有类别”的值(想想 ANOVA 或您将用什么着色堆积条形图)。我们可以重复编码所有函数以在字符串向量中堆叠观察到的选择,或者我们可以简单地创建一种新类型的向量,它会告诉您有效的选择是什么。这称为一个因素,而有效的选择称为级别。

【讨论】:

  • 我相信自从 R 为所有字符值添加了一个全局哈希表以来,因子的内存优势相对较小。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 2023-04-01
  • 2017-02-21
相关资源
最近更新 更多