【发布时间】:2018-06-15 19:42:39
【问题描述】:
我希望你能帮助我解决一个让我卡住了一段时间的问题。
我有一个包含几百万行的数据框,如下所示:df
id V1=i count.i V2=j count.j
1 10000 1 A 1
2 20000 1 B .33
2 20000 1 C .33
2 20000 1 D .33
3 19482 1 E 1
4 10000 .5 A 1
4 20000 .5 A 1
5 34556 1 E 1
6 10101 1 A .5
6 10101 1 B .5
7 20000 .5 E .5
7 20000 .5 F .5
7 44044 .5 E .5
7 44044 .5 F .5
- 我想把它变成一个矩阵(最好是稀疏的),看起来像这样:
矩阵
A, B, C, D, E, F, G, ,..., J
10000 1.5 x x x x x x
10101 .5 .5 x x x x x
19482 x x x x 1 x x
20000 0.5 .33 .33 .33 .25 .25 x
34556 x x x x 1 x x
44044 x x x x x x x
,.., I
- V1 是组成行的序数类,V2 是组成列的序数类。在此示例中,存在 49 种可能性。
- 其中每个相应单元格中的值是该观察 i-j 的 count.i * count.j 的总和。
- id 中的重复项表示 V1 和/或 V2 中的重复项,这是所有需要的信息。我不想通过乘法使用 count.i 和 count.j 来加权我的测量值。例如。当 id=7 时,出现了 4 种可能性,分别是 20000-E、20000-F、44044-E 和 44044-F,它们的权重分别为 0.25。
- 我尝试了 foreach 函数。但是,无法让它工作
非常感谢您的帮助!
编辑:我已将示例更改为更清晰和具有代表性
【问题讨论】:
-
您的意思是 V1$1 到 V1$7 和 V2$A 到 V2$F?同时提供您已经尝试过的代码。