sách gpt4 ai đã đi

r - 加入两个 data.tables 后创建新列

In lại 作者:行者123 更新时间:2023-12-04 10:39:15 26 4
mua khóa gpt4 Nike

我有两个 data.tables,chủ yếumetrics,都由 cid 键控我想向表 chủ yếu 添加指标中每个值的平均值。

但是,我想按 mã số 进行过滤,只对 metrics 中的那些行与给定的 mã số 进行平均。

> metrics
cid code DZ value1 value2
1: 1001 A 101 8 21
2: 1001 B 102 11 26
3: 1001 A 103 17 25
4: 1002 A 104 25 39
5: 1002 B 105 6 30
6: 1002 A 106 23 40
7: 1003 A 107 27 32
8: 1003 B 108 16 37
9: 1003 A 109 14 42

# DESIRED OUTPUT
> main
cid A.avg.val1 A.avg.val2 B.avg.val1 B.avg.val2
1: 1001 12.5 23.0 11 26
2: 1002 24.0 39.5 6 30
3: 1003 20.5 37.0 16 37



# SAMPLE DATA
set.seed(1)
main <- data.table(cid=1e3+1:3, key="cid")
metrics <- data.table(cid=rep(1e3+1:3, each=3), code=rep(c("A", "B", "A"), 3), DZ=101:109, value1=sample(30, 9), value2=sample(20:50, 9), key="cid")
code.filters <- c("A", "B")

这些行获得了所需的输出,但我很难将新的 col 分配回 main。 (另外,最好以编程方式进行)。

main[metrics[code==code.filters[[1]]]][, list(mean(c(value1))), by=cid]
main[metrics[code==code.filters[[1]]]][, list(mean(c(value2))), by=cid]
main[metrics[code==code.filters[[2]]]][, list(mean(c(value1))), by=cid]
main[metrics[code==code.filters[[1]]]][, list(mean(c(value2))), by=cid]

此外,有人可以解释为什么下面一行只取每组中的最后一个值吗?

main[metrics[ code=="A"], A.avg.val1 := mean(c(value1))]

1 Câu trả lời

你不需要chủ yếu。您可以直接从 metrics 获取它,如下所示:

> tmp.dt <- metrics[, list(A.avg.val1 = mean(value1[code=="A"]), 
A.avg.val2 = mean(value2[code=="A"]),
B.avg.val1 = mean(value1[code == "B"]),
B.avg.val2 = mean(value2[code == "B"])), by=cid]

# cid A.avg.val1 A.avg.val2 B.avg.val1 B.avg.val2
# 1: 1001 12.5 23.0 11 26
# 2: 1002 24.0 39.5 6 30
# 3: 1003 20.5 37.0 16 37

如果您仍想使用 chủ yếu 子集,只需执行以下操作:

main <- data.table(cid = c(1001:1002))
> tmp.dt[main]

# cid A.avg.val1 A.avg.val2 B.avg.val1 B.avg.val2
# 1: 1001 12.5 23.0 11 26
# 2: 1002 24.0 39.5 6 30

关于r - 加入两个 data.tables 后创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14510305/

26 4 0
Bài viết được đề xuất: c - 为什么退出(42)?
Bài viết được đề xuất: nat - SERVER REFLEXIVE 和 PEER REFLEXIVE 地址/候选人在什么情况下彼此不同?
Bài viết được đề xuất: r - 删除基于另一个向量的向量条目
Bài viết được đề xuất: shell - 1>/dev/null 2>&1 & pid1=$!意思?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com