Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R data.table使用变量名进行分组_R_Data.table - Fatal编程技术网

R data.table使用变量名进行分组

R data.table使用变量名进行分组,r,data.table,R,Data.table,我正在尝试从现有表创建一个摘要数据表,但是我希望在一个函数中这样做,该函数允许我传入列前缀,以便我可以根据需要为列添加前缀 我已经看到了问题/回答,但我正在尝试解决如何在不使用:=运算符时执行此操作 雷普雷克斯: 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:

我正在尝试从现有表创建一个摘要
数据表
,但是我希望在一个函数中这样做,该函数允许我传入列前缀,以便我可以根据需要为列添加前缀

我已经看到了问题/回答,但我正在尝试解决如何在不使用
:=
运算符时执行此操作

雷普雷克斯:

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
库(data.table)

tbl1您可以使用
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

前缀仅供参考,
tbl2中有一个注释
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