簡體   English   中英

數據表和列名

[英]data.table & column names

我正在使用data.table獲取一列中的一些基本統計信息,同時按另一列進行過濾。

這是命令

stats <- as.data.frame(mydata[, j = list(Sum = sum(as.numeric(get(selection))),
                                         Average = mean(as.numeric(get(selection))),
                                         Count = length(get(selection))), 
                                by = list(get(filters))])

在哪里:

  • mydata是一個包含 20 列左右的data.table
  • selection是以編程方式傳遞的列名
  • filters也是以編程方式傳遞的列名

如果我將自己限制為一個過濾器(一列),則一切正常,但我想過濾多於一列。

可以這樣做:

by = list(get(filters[1]), get(filters[2]), ...) 

但是,這需要我知道將使用多少個過濾器。 這是我不想擁有的限制。

我如何編寫by =以采用任意數量的過濾器(列名) - 我剛剛嘗試過mget(filters)並且這不起作用。

Data.tables by參數接受列名的字符向量(請參閱文檔: help("data.table") )。 不需要get 只需使用by = c(filters)

例子:

library(data.table)
DT <- data.table(mtcars)

filters <- c("am", "gear")
DT[, mean(mpg), by=c(filters)]
#   am gear       V1
#1:  1    4 26.27500
#2:  0    3 16.10667
#3:  0    4 21.05000
#4:  1    5 21.38000

暫無
暫無

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

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