对于那些熟悉线性代数并且之前在R中完成矩阵运算的人来说,这个问题将非常简单。
我有一个包含国家文化特征的矩阵。
structure(c(4.36, 4.44, 4.04, 4.49, 4.09, 4.46, 3.81, 4.44, 3.4,
3.09, 3.31, 3.7, 4.28, 4.62, 4.2, 4.05, 4.28, 3.72, 3.66, 4.49,
4.17, 4.85, 5.18, 4.26, 4.29, 4.3, 3.83, 4.38, 4.74, 4.95, 5.33,
4.82, 4.39, 5.16, 3.6, 4.58), .Dim = c(4L, 9L), .Dimnames = list(
c("Australia", "Austria", "Brazil", "Canada"), c("Performance.Orientation",
"Future.Orientation", "Gender.Egalitarianism", "Assertiveness",
"Humane.orientation", "in.group.collectivism", "institutional.collectivism",
"power.concentration.decentralization..power.distance.",
"uncertainty.avoidance")))
基于此矩阵,我想计算以下文化距离指数:
<img src="http://latex.codecogs.com/gif.latex?CDj=\sum_{i=1}^{9}\frac{(I_i_j-I_i_u)^2/Vi}{9}" title="CDj=\sum_{i=1}^{9}\frac{(I_i_j-I_i_u)^2/Vi}{9}" />
其中Iij是第i个文化实践维度和第j个国家的索引,Iiu是第i个国家的第i个文化实践维度的索引,Vt是i的索引的方差。 - 文化实践维度,CDju是第j个国家与第u个国家的文化距离。
此计算的结果应为平方矩阵,其行和列维度与国家/地区的数量相同。
一旦计算了方阵,我想在两个数据帧列中复制矩阵的所有条目。我希望结果像是
Country1 Country2 CD
Australia Australia 0
Australia Austria 3,2
Australia Brazil 5,4
... .... ...
在尝试完成此操作时,我遇到了很多问题 - 比如,我无法获得矩阵的对角线,从而获得一个矩阵,该矩阵在对角线上具有值,并且在对角线外为零。如果有人能提出解决方案,我会很高兴。
非常感谢您的帮助! 的Riccardo