R 对变量的不同值重复sqldf
只是一点背景:我是通过统计学进入编程领域的,我没有太多正式的编程经验,我只知道如何让事情顺利进行。我愿意接受来自不同方向的任何建议,但我目前正在使用多个sqldf查询来获取所需的数据。我最初在SAS中开始统计编程,我经常使用的功能之一是宏编程能力 举一个简单的例子,我的表a如下所示:R 对变量的不同值重复sqldf,r,sqldf,R,Sqldf,只是一点背景:我是通过统计学进入编程领域的,我没有太多正式的编程经验,我只知道如何让事情顺利进行。我愿意接受来自不同方向的任何建议,但我目前正在使用多个sqldf查询来获取所需的数据。我最初在SAS中开始统计编程,我经常使用的功能之一是宏编程能力 举一个简单的例子,我的表a如下所示: Name Sex A B DateAdded John M 72 1476 01/14/12 Sue F 44 3269
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(“从DateAdded>='2012-01-01'和DateAdded中选择平均值(A),求和(B),读取数据,将DateAdded
列转换为Date
类,添加yearmon
(年/月)列,然后使用sqldf
或aggregate
按年/月进行聚合:
Lines <- "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"
DF <- read.table(text = Lines, header = TRUE)
# convert DateAdded column to Date class
DF$DateAdded <- as.Date(DF$DateAdded, format = "%m/%d/%y")
# add a year/month column using zoo
library(zoo)
DF$yearmon <- as.yearmon(DF$DateAdded)
最后两行的结果是:
> sqldf("select yearmon, avg(A), avg(B) from DF group by yearmon")
yearmon avg(A) avg(B)
1 Jan 2012 81.0 4303
2 Feb 2012 32.5 3215
>
> # 2. using aggregate
> aggregate(cbind(A, B) ~ yearmon, DF, mean)
yearmon A B
1 Jan 2012 81.0 4303
2 Feb 2012 32.5 3215
编辑:
关于按周执行的问题,请参见中的nextfri
函数。读入数据,将DateAdded
列转换为Date
类,添加yearmon
(年/月)列,然后使用sqldf
或aggregate
按年/月进行聚合:
Lines <- "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"
DF <- read.table(text = Lines, header = TRUE)
# convert DateAdded column to Date class
DF$DateAdded <- as.Date(DF$DateAdded, format = "%m/%d/%y")
# add a year/month column using zoo
library(zoo)
DF$yearmon <- as.yearmon(DF$DateAdded)
最后两行的结果是:
> sqldf("select yearmon, avg(A), avg(B) from DF group by yearmon")
yearmon avg(A) avg(B)
1 Jan 2012 81.0 4303
2 Feb 2012 32.5 3215
>
> # 2. using aggregate
> aggregate(cbind(A, B) ~ yearmon, DF, mean)
yearmon A B
1 Jan 2012 81.0 4303
2 Feb 2012 32.5 3215
编辑:
关于按周进行的问题,请参见中的nextfri
函数。您可以使用SQL的groupby
函数。您使用哪个数据库?据我所知,您不能groupby
一系列日期。我有MMDDYY形式的日期,我想将它们分为月和周。例如,MySQL有一个月函数:你可以用SQL的分组功能来代替。你使用哪个数据库?据我所知,你不能按一系列日期分组。我有MMDDYY格式的日期,我想把它们分为几个月和几个星期。例如,MySQL有一个月函数:谢谢!不知道为什么我没有想到myse如果,但这正是我需要做的。谢谢!我不知道为什么我自己没有想到这一点,但这正是我需要做的。