【发布时间】:2012-07-07 05:30:30
【问题描述】:
只是一点背景:我是通过统计学进入编程的,我没有太多正式的编程经验,我只是知道如何让事情发挥作用。我愿意接受任何从不同方向提出的建议,但我目前正在使用多个 sqldf 查询来获取我想要的数据。我最初是在 SAS 中开始统计编程的,我经常使用的东西之一是宏编程能力。
举个简单的例子,假设我的表 A 如下所示:
Name Sex A B DateAdded
John M 72 1476 01/14/12
Sue F 44 3269 02/09/12
Liz F 90 7130 01/01/12
Steve M 21 3161 02/29/12
我当前使用的 select 语句的形式是:
sqldf("SELECT AVG(A), SUM(B) FROM A WHERE DateAdded >= '2012-01-01' AND DateAdded <= '2012-01-31'")
现在我想对 DateAdded 在二月份的输入运行相同的查询。根据我对 SAS 的经验,您将为 DateAdded 的值创建宏变量。我考虑过将其作为(非常非常慢的)for 循环运行,但我不确定如何将 R 变量传递给 sqldf,或者这是否可能。在我的表格中,我在多年的数据中使用相同的查询 - 任何简化我的代码的方法都将非常感激。
【问题讨论】:
-
您可以改用 SQL 的
GROUP BY函数。您使用哪个数据库? -
据我所知,您不能
GROUP BY一个日期范围。我有 MMDDYY 形式的日期,我想将它们分组为月和周。 -
例如MySQL 有一个 MONTH 函数:dev.mysql.com/doc/refman/5.1/en/…