使用 r,我如何将不是基本聚合函数的函数 (moments::skewness) 应用于分组表?

Posted

技术标签:

【中文标题】使用 r,我如何将不是基本聚合函数的函数 (moments::skewness) 应用于分组表?【英文标题】:Using r, how can I apply a function (moments::skewness) that is not a basic aggregate function to a group-by table? 【发布时间】:2016-05-19 01:52:37 【问题描述】:

我在 Redshift 中有一组众包天气数据:许多站点,每个天,每天 20 到 100 个观测值,每个观测值有几个变量。我正在计算每日统计数据。它是这样工作的;

dailyn<-cwoparchive %>%
filter(stationname=="EW2020" %>%
group_by (archivedate) %>%
summarise(ncount=n(),meanlat=mean(latitude),meanlon=mean(longitude)) %>%
collect() %>%
data.frame ()

返回这个,正是我想要的:

archivedate ncount meanlat meanlon 1 2013-02-06 2 38.82667 -76.79884 2 2013-03-19 22 38.82700 -76.79816 3 2013-03-21 45 38.82700 -76.79816 4 2013-03-22 49 38.82699 -76.79819 5 2013-03-24 63 38.82690 -76.79836 6 2013-03-27 62 38.82691 -76.79834 7 2013-03-28 48 38.82700 -76.79816 8 2013-03-29 45 38.82700 -76.79816 9 2013-03-30 39 38.82700 -76.79816 10 2013-04-01 49 38.82697 -76.79823 等

接下来我想知道早晨是否阳光充足。但是当我做和上面一样的事情时,只用这个替换那个总结行:

summarise(askew=skewness(linterpreted))

我收到一条错误消息,“postgresqlExecStatement(conn, statement, ...) 中的错误: RS-DBI 驱动程序:(无法检索结果:错误:函数偏度(整数)不存在 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。”然而,偏度函数在正常的非分组数据帧中的相同数据上运行良好。

【问题讨论】:

请展示一个可重现的示例和预期的输出。请检查你是否也加载了plyr 感谢您的关注!好的,你必须链接到我的 Redshift 数据库。我会让它 24 小时开放。因此链接:cwop_db 正如我所提到的,您可以检查是否将 plyr 与 dplyr 一起加载。如果是这种情况,这可能会发生。试试dplyr::summarise(stationdata, skewness(radiance)) 是的,谢谢...但我确实加载了 dplyr。我在上面添加了一个运行良好的代码示例。当我用偏度替换均值时,就会出现错误。 【参考方案1】:

抱歉打扰了大家,我解决了。首先下载,然后在后续步骤中进行分组-这似乎不合理但很有必要,然后对此进行总结。

stationdata<-cwoparchive %>%
filter(stationname=="EW2020") %>%
collect() %>%
data.frame ()

station_by_day <- group_by(stationdata, archivedate)

skew_by_day <- summarise(station_by_day, count = n(),askew=skewness(linterpreted))

产生理想的结果:

存档日期计数歪斜 (日期)(整数)(dbl) 1 2013-02-06 2 0.0000000 2 2013-03-01 5 -0.3755537 3 2013-03-19 22 -0.2498925 4 2013-03-20 38 -0.3328628 5 2013-03-21 45 0.7237873 等

【讨论】:

以上是关于使用 r,我如何将不是基本聚合函数的函数 (moments::skewness) 应用于分组表?的主要内容,如果未能解决你的问题,请参考以下文章

R - 添加新分组列时聚合函数不同的结果

R语言aggregate函数数据聚合实战

将聚合函数从 R 转换为 python [重复]

聚合 MySQL 函数是不是总是返回单行?

Terra R - 使用自定义函数加速栅格数据的聚合()

R 不会使用聚合函数正确计算均值