沿R中的1维的频率/应变表

时间:2019-02-21 19:40:24

标签: r frequency find-occurrences

我正在尝试沿一个维度计算同现次数。它有点类似于赢/输,优势矩阵或频率表(以及频谱图/光栅图),但没有方向性,且沿1个变量。

以下是数据示例:

  person response
1      a        1
2      a        2
3      a        4
4      b        1
5      b        2
6      c        2
7      c        4
8      d        4
9      d        3

目标是获得一个n x n矩阵,如下所示(NA也可以是出现次数的周期):

     [,1] [,2] [,3] [,4]
[1,]   NA    2    0    1
[2,]    -   NA    0    2
[3,]    -    -   NA    1
[4,]    -    -    -   NA
  1. 如何将长数据转换为R中的矩阵? (无需手动计数)。
  2. 这种类型的指标称为什么?这不是典型的“应急”表。
  3. 创建表格后,用表示计数/频率的颜色绘制结果矩阵的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

对此进行测试

r1 = sort(unique(df1$response))
r2 = split(df1$response, df1$person)
ans = sapply(seq_along(r1), function(i)
    rowSums(sapply(r2, function(x) (r1[i] %in% x) * (r1 %in% x))))
diag(ans) = NA
ans
#     [,1] [,2] [,3] [,4]
#[1,]   NA    2    0    1
#[2,]    2   NA    0    2
#[3,]    0    0   NA    1
#[4,]    1    2    1   NA