从出现列表中计算协方差矩阵

时间:2017-04-26 10:11:26

标签: r covariance

我有以下数据框:

# my_data
id  cg
1   a
2   b
3   a
3   b
4   b
4   c
5   b
5   c
5   d
6   d

我想计算cg值的协方差。我相信我可以通过在以下矩阵上使用cov()来获取它,其中每个单元格计算两个值cg之间的共现次数。

# my_matrix
cg  a  b  c  d
a   2  1  0  0
b   1  4  2  1
c   0  2  2  1
d   0  1  1  2

my_datamy_matrix的最快捷方式是什么?请注意,cg包含超过700个唯一值。

如果有更好的方法来生成协方差矩阵,我也对此感兴趣。

以下是生成my_data的代码:

my_data <- structure(list(id = c(1L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 5L, 6L),
                          cg = c("a", "b", "a", "b", "b", "c", "b", "c", "d", "d")),
                     .Names = c("id", "cg"),
                     class = "data.frame", row.names = c(NA, -10L))

1 个答案:

答案 0 :(得分:1)

我们可以将crossprodtable

一起使用
crossprod(table(my_data))
#    cg
#cg  a b c d
#  a 2 1 0 0
#  b 1 4 2 1
#  c 0 2 2 1
#  d 0 1 1 2