你如何强制在 R 的表中包含一个级别?

Posted

技术标签:

【中文标题】你如何强制在 R 的表中包含一个级别?【英文标题】:How can you force inclusion of a level in a table in R? 【发布时间】:2013-11-15 09:48:46 【问题描述】:

有没有办法强制 R 的 table 函数包含行或列,即使它们从未出现在数据中?例如,

data.1 <- c(1, 2, 1, 2, 1, 2, 4)
data.2 <- c(1, 4, 3, 3, 3, 1, 1)

table(data.1, data.2)

返回

      data.2
data.1  1 3 4
      1 1 2 0
      2 1 1 1
      4 1 0 0

行中缺少 3,列中缺少 2,因为它们没有出现在数据中。

是否有一种简单的方法可以强制将额外的零行和列插入正确的位置,而不是返回以下内容?

      data.2
data.1  1 2 3 4
      1 1 0 2 0
      2 1 0 1 1
      3 0 0 0 0
      4 1 0 0 0

【问题讨论】:

【参考方案1】:

您需要将向量转换为factors,每个向量都包含您想要包含在输出中的所有levels

levs <- sort(union(data.1, data.2))
table(factor(data.1, levs), factor(data.2, levs))
#    
#     1 2 3 4
#   1 1 0 2 0
#   2 1 0 1 1
#   3 0 0 0 0
#   4 1 0 0 0

【讨论】:

以上是关于你如何强制在 R 的表中包含一个级别?的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 `qmake` 在 `project.pbxproj` 中包含 `ProvisioningStyle` $ `DevelopmentTeam` 字段?

SQL Server如何查找表名或列名中包含空格的表和列

查询名称中包含空格的表

如何在 json 对象中包含表名

如何在聚合中包含下一组的第一行?

SQL如何查找和删除MYSQL数据库中包含特定字符串的记录