gpt4 book ai didi

r - 将数组与 R 中的 data.table 相乘

转载 作者:行者123 更新时间:2023-12-02 15:16:57 25 4
gpt4 key购买 nike

我有一个名为 dtdata.table,如下所示:

 ID V1 V2 V3 V4 V5 time color
1 F T F F T 1 red
1 F T T F T 2 red
2 T F T F F 1 blue
3 F F F F F 2 green
3 T T T F T 3 purple

实际上,dim(dt) = [1321221 123]。现在我知道一般情况下,true 和 false 在 R 中分别存储为 1 和 0。我还有一个数组 l,尽管它看起来像

 V1 V2 V3 V4 V5
1 2 1 3 4

这些是分配给 V1,V2,V3,V4,V5 的权重。我想将这些权重乘以真实值(因为它们的数值为 1)并在每一行中相加,就像我们对矩阵所做的那样。输出应该看起来像

ID Total time color
1 6 1 red
1 7 2 red
2 2 1 blue
3 0 2 green
3 8 3 purple

现在记住,这实际上是真实数据的一小部分,所以我正在寻找一个快速的解决方案,最好是 data.table 解决方案,这样我就可以改进我的 data .table 技能。

最佳答案

dt[, .(ID, Reduce(`+`, Map(`*`, .SD, l)), time, color), .SDcols = V1:V5]
# ID V2 time color
#1: 1 6 1 red
#2: 1 7 2 red
#3: 2 2 1 blue
#4: 3 0 2 green
#5: 3 8 3 purple

# or using matrix product

dt[, .(ID, as.matrix(.SD) %*% t(l), time, color), .SDcols = V1:V5]

关于r - 将数组与 R 中的 data.table 相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39711653/

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