gpt4 book ai didi

r - data.table 用变量名分组

转载 作者:行者123 更新时间:2023-12-01 23:39:47 25 4
gpt4 key购买 nike

我正在尝试创建一个摘要 data.table来自现有的,但是我想在允许我传入列前缀的函数中执行此操作,以便我可以根据需要为我的列添加前缀。

我看过问题/回复 here但我想弄清楚在不使用 := 时该怎么做运营商。

代表:

library(data.table)
tbl1 <- data.table(urn = c("a", "a", "a", "b", "b", "b"),
amount = c(1, 2, 1, 3, 3, 4))

# urn amount
# 1: a 1
# 2: a 2
# 3: a 1
# 4: b 3
# 5: b 3
# 6: b 4

tbl2 <- tbl1[, .(mean_amt = mean(amount),
rows = .N),
by = urn]

# urn mean_amt rows
# 1: a 1.333333 3
# 2: b 3.333333 3

这是为正在创建的列名称使用固定名称,但是如前所述,我希望能够包含一个前缀。

我试过以下方法:

prefix <- "mypfx_"
tbl2 <- tbl1[, .(paste0(prefix, mean_amt) = mean(amount),
paste0(prefix, rows) = .N),
by = urn]

# Desired output
# urn mypfx_mean_amt mypfx_rows
# 1: a 1.333333 3
# 2: b 3.333333 3

不幸的是,代码收到一条错误消息:Error: unexpected '=' in " tbl2 <- tbl1[, .(paste0(prefix, mean_amt) ="

如有任何关于如何实现上述工作的想法,我们将不胜感激。

最佳答案

您可以使用setNames 动态重命名列:

prefix <- "mypfx_"
tbl2 <- tbl1[, setNames(list(mean(amount), .N), paste0(prefix, c("mean_amt", "rows"))),
by = urn]

tbl2
# urn mypfx_mean_amt mypfx_rows
#1: a 1.333333 3
#2: b 3.333333 3

关于r - data.table 用变量名分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46066219/

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