根据时间段创建组

时间:2016-04-07 07:25:22

标签: r

如何根据5年步骤为我的数据创建新的分组变量?

所以从这个:

group <- c(rep("A", 7), rep("B", 10))
year <- c(2008:2014, 2005:2014)
dat <- data.frame(group, year)

   group year
1      A 2008
2      A 2009
3      A 2010
4      A 2011
5      A 2012
6      A 2013
7      A 2014
8      B 2005
9      B 2006
10     B 2007
11     B 2008
12     B 2009
13     B 2010
14     B 2011
15     B 2012
16     B 2013
17     B 2014

对此:

 > dat
   group year    period
1      A 2008 2005_2009
2      A 2009 2005_2009
3      A 2010 2010_2014
4      A 2011 2010_2014
5      A 2012 2010_2014
6      A 2013 2010_2014
7      A 2014 2010_2014
8      B 2005 2005_2009
9      B 2006 2005_2009
10     B 2007 2005_2009
11     B 2008 2005_2009
12     B 2009 2005_2009
13     B 2010 2010_2014
14     B 2011 2010_2014
15     B 2012 2010_2014
16     B 2013 2010_2014
17     B 2014 2010_2014

我想我可以使用cut(dat$year, breaks = ??),但我不知道如何设置休息时间。

2 个答案:

答案 0 :(得分:4)

这是一种方法:

dat$period <- paste(min <- floor(dat$year/5)*5, min+4,sep = "_")

我想这里的诀窍是使用floor(year/x)*x功能让最大的整数小于你的年份。

这是一个应该正常工作的版本:

x <- 5
yearstart <- 2000
dat$period <- paste(min <- floor((dat$year-yearstart)/x)*x+yearstart,
                    min+x-1,sep = "_")

您可以使用yearstart来确保例如2000年是x不是其倍数的群体中的第一个。

答案 1 :(得分:1)

如果您从“年份”列中创建实际的public class QueryCursorAdapter extends CursorAdapter{ View retView; private int myParam1, myParam2, myParam3; private DBHelper mHelper; public QueryCursorAdapter(Context context, Cursor c, int param1, int param2, int param3) { super(context, c); myParam1 = param1; myParam2 = param2; myParam3 = param3; } 个对象,

cut应该可以胜任。

Date