【发布时间】:2019-07-14 14:04:32
【问题描述】:
我有一个大型数据集,需要比较列之间的所有组合。所需的输出将是每个列组合的矩阵。
开始的数据框可能看起来像Data:
set.seed(1)
Data <- data.frame(
ID = (1:100),
A = sample(1:10,10),
B = sample(1:20,100,replace = T),
C = sample(1:5,100,replace = T),
D = sample(1:20,100,replace = T)
)
Data
我想知道同一组合在两列中出现的频率。
(例如,A 中的 1 与 B 中的 4 多久出现一次)
对于 A 列到 D 列之间的所有组合?
我正在使用:
require(dplyr)
X1 <- ddply(Data,.(A,B),transmute, count=length(ID))
得到一个像这样的对象:
A B count
1 1 3 1
2 1 7 1
3 1 9 2
4 1 9 2
5 1 12 1
6 1 13 1
7 1 14 1
8 1 16 1
9 1 18 1
10 1 20 1
11 2 2 1
12 2 6 1
13 2 10 1
14 2 11 1
但是我怎样才能得到矩阵格式的count 结果呢?
A 与 B 冷的输出如下所示:
B1 B2 B3 B4 B5 B6
A1 1 1 2 1 1 ...
A2 1 1 2 1 1
A3 2 1 1 1 1
A4 2 1 1 1 1
A5 1 1 2 1 2
A6 1 1 2 1 2
A7 1 3 1 1 1
A8 1 3 1 1 2
A9 1 3 2 1 2
A10 1 1 2 1 1
In the best case the result would be a `list` containing the objects `AB` `AC` ...`CD` as matrix.
【问题讨论】:
-
这是什么
transmutefunction ?是你写的还是包里的?你能在你的问题中添加你加载的包吗? -
transmutate来自dplyrpackage -
ddply来自plyr库。