回答
如果您熟悉SQL语法,则可以使用aggregate
和merge
。 服用example from the PostgreSQL manual之一,我们将使用
empsalary <- data.frame(depname=rep(c("develop", "personnel", "sales"), c(5, 2, 3)),
empno=c(11, 7, 9, 8, 10, 5, 2, 3, 1, 4),
salary=c(5200, 4200, 4500, 6000, 5200, 3500, 3900, 4800, 5000, 4800))
merge(empsalary, aggregate(salary ~ depname, empsalary, mean), by="depname")
再现第一实施例(通过depname
计算平均工资)。
depname empno salary.x salary.y
1 develop 11 5200 5020.000
2 develop 7 4200 5020.000
3 develop 9 4500 5020.000
4 develop 8 6000 5020.000
5 develop 10 5200 5020.000
6 personnel 5 3500 3700.000
7 personnel 2 3900 3700.000
8 sales 3 4800 4866.667
9 sales 1 5000 4866.667
10 sales 4 4800 4866.667
您可能想要看看plyr必须提供更详细的结构。
正确,上面的解决方案创建一个新的data.frame。你也可以模拟合并,如下所示:'m < - with(empsalary,rep(tapply(salary,depname,mean),table(depname)))'','cbind'在你的原始data.frame中生成的向量。例如,对于平均PERC。的工资,我们可以使用'empsalary $ avg.perc < - empsalary $ salary/m * 100'。 – chl
谢谢你的回复。假设我想用R语言解决以下查询: SELECT depname,empno,(salary * avg(salary)OVER(PARTITION BY depname))* 100,(cost * avg(cost)OVER(PARTITION BY depname))* 100 FROM empsalary 然后,我是否需要编写一个单独的合并并为每个窗口函数创建一个临时数据框并合并所有最终结果..? –
不是。您可以使用我提出的建议(按组计算均值并按行扩展,然后将其作为新列添加到您的data.frame中);您只需添加第二个聚合步骤,用'cost'替换'salary'。 (顺便说一句,*不要删除您的评论*,否则未来的读者将无法关注对话。) – chl
- 1. R中的窗口函数?
- 2. R:窗口()函数
- 3. R中的滑动窗口函数
- 4. SQL Server - 窗口函数
- 5. SQL Server 2014中的窗口函数
- 6. 中的R语言
- 7. 在SQL Server中嵌套窗口函数
- 8. R中函数的语法?
- 9. 有条件的窗口函数sql
- 10. 情节中的R语言
- 11. SVM中的R语言
- 12. R语言中rdivide(matlab)的等效函数
- 13. r data.table语言中的函数式编程/元编程/计算
- 14. 在R语言
- 15. 执行SQL与“象”语句中的R语言
- 16. 找出语言窗口被安装为
- 17. 为窗口绑定C语言
- 18. spark SQL窗口函数滞后
- 19. SQL查询(窗口函数)协助
- 20. SQL窗口函数与where子句
- 21. 数据框中的滑动窗口r
- 22. 使用语言集成SQL的schemaRDD的SQL函数
- 23. R中的移动窗口
- 24. 如何提取函数内部使用R语言的函数参数?!
- 25. R emacs窗口
- 26. sql语句中的()函数
- 27. MSSQL窗口函数
- 28. Postgres窗口函数
- 29. postgres窗口函数 - ()
- 30. 编程语言中的构造函数
嗨。你需要一个例子来展示你用window postegre sql函数做了什么。 – agstudy