我有資料,我想使用summary_by函式(來自doBy包)按組進行匯總。我不能使用summary_by公式中的列名,而是我之前創建的變數。
以下是我想要達到的結果:
library(data.table)
library(doBy)
mtcars = data.table(mtcars)
doBy::summary_by(data = mtcars, mpg ~ gear am, FUN = "mean")
輸出:
gear am mpg."mean"
3 0 16.10667
4 0 21.05000
4 1 26.27500
5 1 21.38000
這是我想做的:
library(data.table)
library(doBy)
mtcars = data.table(mtcars)
variable1 = "gear" # which is a column name of mtcars
variable2 = "am" # which is a column name of mtcars
variable3 = "mpg" # which is a column name of mtcars
doBy::summary_by(data = mtcars, variable3 ~ variable1 variable2 , FUN = "mean")
我嘗試使用get、assign、eval、mget函式,但找不到解決方案。
uj5u.com熱心網友回復:
只需提供一個字串而不是依賴于非標準評估的公式。
library(data.table)
library(doBy)
mtcars = data.table(mtcars)
variable1 = "gear" # which is a column name of mtcars
variable2 = "am" # which is a column name of mtcars
variable3 = "mpg" # which is a column name of mtcars
doBy::summary_by(data = mtcars,
# alternatively to sprintf(), use paste() oder glue()
as.formula(sprintf("%s ~ %s %s", variable3, variable1, variable2)),
FUN = "mean")
uj5u.com熱心網友回復:
謝謝@mnist 它有效!
我只是找到了另外兩種方法:
library(data.table)
library(doBy)
mtcars = data.table(mtcars)
variable1 = "gear" # which is a column name of mtcars
variable2 = "am" # which is a column name of mtcars
variable3 = "mpg" # which is a column name of mtcars
Summary_by 具有重新制定功能的解決方案:
summary_by(data = mtcars, reformulate( termlabels = c(variable1, variable2), response = variable3) )資料表原生方式:
mtcars[, mean(get(variable3)), by = mget(c(variable1, variable2))]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516208.html
標籤:r变量数据表公式
上一篇:串列中的哪個專案-Python
下一篇:驅動開發:內核特征碼搜索函式封裝
