R中1维的频率/列联表

问题描述 投票:0回答:1

我试图计算沿着一个维度的共现。它有点类似于赢/输,支配矩阵或频率表(和频谱图/栅格图),但没有方向性和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. 在创建表格之后,使用表示计数/频率的颜色绘制结果矩阵的最佳方法是什么?
r frequency find-occurrences
1个回答
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 
© www.soinside.com 2019 - 2024. All rights reserved.