gpt4 book ai didi

r - 根据时间段创建组

转载 作者:行者123 更新时间:2023-12-01 11:27:01 25 4
gpt4 key购买 nike

如何根据 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 = ??) 但我不知道如何设置中断。

最佳答案

这是一种实现方式:

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 来确保例如当 x 不是它的倍数时,2000 年是一组中的第一个。

关于r - 根据时间段创建组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36469382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com