【问题标题】:Applying Functions to several variables, by a number variables通过数字变量将函数应用于多个变量
【发布时间】:2017-03-14 14:56:36
【问题描述】:

我的数据如下:

Week_ID  County  State   date     ZCTA T_mean_F   Precipitation holiday Units
    523 Carroll  Iowa 01/01/2010 51401 5.669194             0       1     0
    523 Carroll  Iowa 01/01/2010 51430 5.757368             0       1     0
    523 Carroll  Iowa 01/01/2010 51436 5.355239             0       1     0
    523 Carroll  Iowa 01/01/2010 51440 6.055060             0       1     0
    523 Carroll  Iowa 01/01/2010 51443 5.806877             0       1     0
    523 Carroll  Iowa 01/01/2010 51444 5.995150             0       1     0
    523 Carroll  Iowa 01/01/2010 51451 5.003030             0       1     0
    523 Carroll  Iowa 01/01/2010 51455 6.342612             0       1     0
    523 Carroll  Iowa 01/01/2010 51459 5.500786             0       1     0
    523 Carroll  Iowa 01/01/2010 51463 6.303967             0       1     0

这只是前 10 行。整个数据集有许多不同的 Week_ID 和 ZCTA。

我想做的是通过 ZCTA 和 Week_ID 取“T_mean_F”和“降水”的平均值以及“单位”的总和,最好是一次调用。最终结果看起来像这样(只是一个例子,不是实际输出):

Week_ID      ZCTA  T_mean_avg   Prep_avg  Units
  523       51401   5.669194       2        10
  524       51401   5.757368       3        12
  525       51401   5.355239       7        14

这是我尝试过的:

Rollup = Wthr_UMW_dwu[,.(T_mean_avg = mean(T_mean_F),Prep_avg = mean(Precipitaton), Units=sum(Units)), by=.(ZCTA,Week_ID)]

Rollup_1<- aggregate(cbind(T_mean_F,Precipitation,Units) ~ ZCTA + Week_ID, data=Wthr_UMW_dwu, FUN = function(x) c(mn=mean(x), MN=mean(x), n = sum(x)))

这两个问题都是我根据之前关于该主题的问题建模的,并且都会产生错误。

任何人都知道一种流畅/优雅的方式来实现这一目标?

谢谢, -基思

【问题讨论】:

  • 您是否加载了library(data.table),因为第一个看起来应该可以工作。同时转换为data.table,即setDT(Wthr_UMW_dwu)[, .(T_mean_avg = mean(T_mean_F),Prep_avg = mean(Precipitation), Units=sum(Units)), by=.(ZCTA,Week_ID)]检查Precipitation的拼写。
  • 将您的数据提供为可重现的代码,而不是它的打印输出。如果您正在使用它,也请使用data.table 标签。
  • 您似乎不想汇总而只是聚合,因为by 分组是按单个字符向量进行分组(单个分组粒度)。 Rollup 旨在聚合各种分组粒度,通常是层次结构中的级别,即list("ZCTA", c("ZCTA","Week_ID"))。如果您要添加预期的输出,读者会更清楚您想要实现的目标。
  • dplyr 包中的 group_by 和 summarise 会不起作用吗? Wthr_UMW_dwu%&gt;%group_by(ZCTA,Week_ID)%&gt;%summarise(mean(T_mean_F),Prep_avg=mean(Precipitation)...
  • 因为您在data.frame 上使用data.table 方法。将其转换为data.table,它应该可以工作

标签: r function aggregate rollup summarize


【解决方案1】:
library(data.table)
setDT(x)
x[, .(
  avg.T_mean_F = mean(T_mean_F),
  avg.P = mean(Precipitation),
  s.Units = sum(Units)
), by = .(ZCTA, Week_ID)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-13
    • 2014-06-28
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    相关资源
    最近更新 更多