簡體   English   中英

R data.table按名稱存儲在變量中的列引用的分組總和

[英]R data.table grouped sum for column referenced by name stored in a variable

問題如下:我有一個帶有A和B列的data.table。需要一個摘要,它的名稱作為字符向量傳遞到變量var1中。

我已經嘗試尋找答案了一段時間,請參閱例如 SO帖子。 無法找到合適的解決方案,我不得不問這個問題。

現在我要做的是(使用data.frame)

tmp[, var1] <- rep(1, nrow(tmp))
tmp <- aggregate(formula(paste(var1, "~ A + B")), tmp, sum)

但是我最后的努力是無法對data.table做到這一點

tmp <- tmp[, list(..var1 = .N), by = list(A, B)]

現在,我的代碼出了什么問題以及如何解決?

並請注意,我不想使用:=運算符,因為我希望結果與聚合()的結果完全相同。

編輯1:一個工作示例:

library(data.table)
tmp <- data.table(A=c("R","G","G","B","B","B"), B=c(1,1,1,2,1,2))
print(tmp)

var1 <- "C"

tmp[, var1] <- rep(1, nrow(tmp))
tmp2 <- aggregate(formula(paste(var1, "~ A + B")), tmp, sum)
print(tmp2)

tmp3 <- tmp[, list(..var1 = .N), by = list(A, B)]
print(tmp3)

希望我沒有誤讀您的qn。 以下是一些選項:

1)使用base::setNames

DT[, setNames(.(.N), var1), by=.(A, B)]

2)使用data.table::setnames

setnames(DT[, .N, by=.(A, B)], "N", var1)[]

3)使用base::structure后跟base::as.list

DT[, as.list(structure(.N, names=var1)), by=.(A, B)]

數據:

DT <- data.table(A=c(1,1,2,2), B=c(1,1,2,3))
var1 <- "myCol"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM