在R中创建对称频率表

邪恶

我有一个小问题,我认为这应该是微不足道的,但是我想不出一个优雅的解决方案(或正确使用的函数)。

假设我有一个包含两个因子变量的数据框,我想计算它们的共现次数。这应该很容易:

require(tidyverse)
set.seed(5)
example <- tibble(
  Var_1 = sample(letters[1:5], 50, replace = TRUE),
  Var_2 = sample(letters[1:4], 50, replace = TRUE)
)

table(example)

输出为:

     Var_2
  Var_1 a b c d
      a 4 0 2 1
      b 3 4 2 3
      c 3 4 0 6
      d 3 5 2 0
      e 1 0 3 4

但是,由于有更多的独特的因素Var_1Var_2,该表是不对称的,5通过4在这种情况下。我将如何强制表格对称,并对两个维度使用更长的唯一因子向量?

即,在此示例中,5通过5表,如下所示:

     Var_2
  Var_1 a b c d e
      a 4 0 2 1 0
      b 3 4 2 3 0
      c 3 4 0 6 0
      d 3 5 2 0 0
      e 1 0 3 4 0

我唯一想到的是手动检查其中哪些条目Var_1不出现Var_2并添加零列,但是也许有更好的解决方案?谢谢。

罗纳克·沙

所有列均转换examplefactors相同levels

all_vec <- sort(unique(unlist(example)))
example[] <- lapply(example, factor, levels = all_vec)
table(example)

#     Var_2
#Var_1 a b c d e
#    a 4 0 2 1 0
#    b 3 4 2 3 0
#    c 3 4 0 6 0
#    d 3 5 2 0 0
#    e 1 0 3 4 0

如果您想要一个tidyverse答案:

library(dplyr)
library(tidyr)

example %>%
  mutate(across(everything(), factor, levels = all_vec)) %>%
  count(Var_1, Var_2, .drop = FALSE) %>%
  pivot_wider(names_from = Var_1, values_from = n, values_fill = list(n = 0))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在R中创建频率表

来自分类Dev

从R中的长表创建对称矩阵

来自分类Dev

在R中的频率表中创建间隔

来自分类Dev

在R中创建对称矩阵

来自分类Dev

为R中的多个因子列创建频率表

来自分类Dev

在R或MySQL中创建交叉频率表

来自分类Dev

使用R中的权重创建降价频率表

来自分类Dev

R中的多路频率表

来自分类Dev

R中的加权频率表

来自分类Dev

汇总R中的频率表

来自分类Dev

结合R中的频率表

来自分类Dev

R频率表中的错误

来自分类Dev

在R中使用rollapply()创建频率表

来自分类Dev

从R中的向量创建频率计数

来自分类Dev

r中的多个变量的频率表

来自分类Dev

制作r中的均值和频率表

来自分类Dev

R中随机子集的频率表

来自分类Dev

每组创建频率表

来自分类Dev

如何基于另一个对称数据帧在 R 中创建对称数据帧

来自分类Dev

在 R 中,列联表中单行的频率分析

来自分类Dev

创建对称矩阵的有效方法,计算两个字符串属于同一列表的频率

来自分类Dev

r knit html如何创建像在书本上看到的频率表一样的简单频率表?

来自分类Dev

在R中创建一个双模频率矩阵

来自分类Dev

聚合函数以在R中创建频率矩阵

来自分类Dev

从R中的频率矩阵创建一个Genet类

来自分类Dev

R中多个列和多个行的表频率

来自分类Dev

如何从频率表转换为R中的原始数据

来自分类Dev

在R中为3种频率表应用列表

来自分类Dev

如何从R中的数据帧制作频率表