我有两个表,我正在尝试从一个表中查找值以添加到另一个表中的值。目前我正在使用两个 for 循环,但它们运行缓慢。我是 R 新手,知道我应该避免循环以加快速度,但我不知道如何做。
表1(几千行,37列):
type cat1 cat2 cat3 ... cat36
1 2 3 2 7
3 6 2 1 9
2 4 6 7 4
3 5 7 8 2
5 2 2 9 1
4 3 1 2 3
1 8 1 4 4
...
表2(36行,5列):
type1 type2 type3 type4 type5
cat1 2 3 4 3 8
cat2 8 5 5 2 6
cat3 7 5 1 3 5
...
cat36 4 7 2 8 9
我想通过添加表 2 中的适当值(5 种类型和 36 个类别之间的匹配)来修改表 1 中的每个值。以下是期望的结果:
type cat1 cat2 cat3 ... cat36
1 4 11 9 11
3 10 7 2 11
2 7 11 12 11
3 9 12 9 4
5 10 8 14 10
4 6 3 5 11
1 10 9 11 8
...
这是我当前的(慢)代码:
for (i in 1:36) {
for (j in 1:nrow(Table1)) {
Table1[j,i+1] = Table1[j,i+1] + Table2[i,Table1[j,1]]
}
}
表 1 中的类型列表示column在表2中添加到rows见表1。因此,使用“type”列作为 Table2 行的索引,然后转置结果矩阵,以便可以将行添加到行:
Table3 <- cbind(Table1[ , "type"],
t(Table2[ , Table1[ , "type"] ]) + Table1[ , -1])
(我假设 Table1 和 Table2 是矩阵。如果它们是数据框,您可以使用Table1$type
代替Table1[,"type"]
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)