R - 使用 dcast 聚合具有变量名称的数据

R - Aggregate data with variable name using dcast

Python R 的新人,所以请原谅这个幼稚的问题。

我有一个名为 metricsR 数据框,其中包含四列:

我想将聚合级别(dayweek)作为变量传递给 dcast 以进行聚合。

agg_level <- c("week")

如果我在函数中硬编码 week,它会正确汇总每周的数据:

week NYC CHI SF

2015-10-18 1 2 3

2015-10-25456

如果我用变量替换 week,它会失败。 (它汇总了 所有 周的数据。)

agg_level NYC CHI SF

week 5 7 9

基于thismetrics[[agg_level]]从变量中提取一列,但是失败了:

正确的做法是什么?

dcast 的公式参数期望传递给它的单词是 data.frame x 内的 column/variable 名称。它不承认或解决 "agg_level" 是一个变量的事实。因此,您有两个选择:

# Option 1
# Do some text operations to make the formula based on variables.
if(this==that) {agg_level <- 'week'} else {agg_level <- 'day'}
myFormula <- sprintf("%s ~ city", agg_level)
met <- dcast(metrics, as.formula(myFormula), sum, value.var = metric)

# Option 2 - Untested
# Take advantage of dcast's alternative to the formula notation and pass a list instead.
# No idea if this will work.
met <- dcast(metrics, list(.(agg_level),.(city)), sum, value.var=metric)