考虑数据框中的名称及其列值,如何在R中创建计算新变量的公式

时间:2013-12-02 20:33:32

标签: r

大家好我正在尝试解决R中的一个小问题来计算R中的新变量。我的数据框的输出版本是:

structure(list(sexo = c(-22.84754, -30.95001, -37.36658, -45.64382, 
-54.9466, -0.1732915), cli_edad = c(5.972972, 11.67697, 16.46362, 
26.57938, 47.19307, 0.1037254), edad2 = c(-0.0637181, -0.1199798, 
-0.1600652, -0.2424397, -0.4273092, -0.001068), veces_mora_ago12 = c(-100.6952, 
-166.6598, -391.6087, -710.2349, -1098.773, -0.3525356), veces_mora_sep12 = c(20.06456, 
162.5816, 388.1126, 738.8196, 1181.483, 0.2907068), veces_mora_oct12 = c(79.44273, 
-15.99917, -13.33856, 9.459844, 103.7592, -0.0863719)), .Names = c("sexo", 
"cli_edad", "edad2", "veces_mora_ago12", "veces_mora_sep12", 
"veces_mora_oct12"), class = "data.frame", row.names = c(NA, 
6L))

该数据帧的行是不同模型的系数。当我在R中加载数据帧时,我需要为每个模型计算一个新变量。例如,加载的数据框DF将具有与z相同的名称,但在这种情况下,我必须为DF计算6个附加变量,这些变量是针对不同的公式定义的,例如考虑z的名称和z的第一行:

DF$I1=-22.8475400*DF$sexo+5.9729720*DF$cli_edad-0.0637181*DF$edad2-100.6952000*DF$veces_mora_ago12+20.0645600*DF$veces_mora_sep12+79.4427300*DF$veces_mora_oct12

与上一个公式一样,我必须为z的名称和第二行之间的组合编写另外5个公式,直到z的名称和第六行。

我不知道是否可以在R中创建这个公式,当我加载数据框时可以应用这些来计算新变量。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

你的例子:

> -22.8475400*DF$sexo+5.9729720*DF$cli_edad-0.0637181*DF$edad2-100.6952000*DF$veces_mora_ago12+20.0645600*DF$veces_mora_sep12+79.4427300*DF$veces_mora_oct12
[1]  17410.94776  19549.83787  47112.85467  88294.47367 144127.32240     39.04883

@JJLagrange说我觉得你想要这个???

DM=as.matrix(DF)
DM%*% t(DM)
             1           2           3            4            5           6
1  17410.94776  19549.8379  47112.8547   88294.4737  144127.3224  39.0488287
2  19549.83787  55558.5082 129927.5614  240057.8018  375800.3450 113.9736682
3  47112.85467 129927.5614 305834.0191  566896.3661  890283.7105 260.2182340
4  88294.47367 240057.8018 566896.3661 1053167.3837 1658033.7139 475.0128054
5 144127.32240 375800.3450 890283.7105 1658033.7139 2619216.6537 736.2772169
6     39.04883    113.9737    260.2182     475.0128     736.2772   0.2570419