gpt4 book ai didi

r - 不循环查找

转载 作者:行者123 更新时间:2023-12-04 15:14:40 25 4
gpt4 key购买 nike

我有两个表,我试图从一个表中查找值以添加到另一个表中的值。目前我正在使用两个 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...

Table2 (36 rows, 5 columns):

      type1 type2 type3 type4 type5cat1      2     3     4     3     8cat2      8     5     5     2     6cat3      7     5     1     3     5...cat36     4     7     2     8     9

I want to modify each value in Table1 by adding the appropriate value (matching among the 5 types and 36 categories) from Table2. Here are the desired results:

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...

Here is my current (slow) code:

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 中的类型列指示将表 2 中的哪一列添加到表 1 中的行。因此,使用“type”列作为 Table2 行的索引,然后对结果矩阵进行转置,以便将行添加到行:

Table3 <- cbind(Table1[ , "type"], 
t(Table2[ , Table1[ , "type"] ]) + Table1[ , -1])

(我假设 Table1 和 Table2 是矩阵。如果它们是数据框,您可以使用 Table1$type 而不是 Table1[,"type"] )。

关于r - 不循环查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com