Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于日期范围的子集_R_Subset - Fatal编程技术网

R 基于日期范围的子集

R 基于日期范围的子集,r,subset,R,Subset,我有一个数据集(许多玩家都有玩家姓名、一些玩家评级和评级发布日期,例如 Player date overall_rating Aaron Cresswell 4/21/2016 74 Aaron Cresswell 12/5/2014 71 Aaron Cresswell 11/7/2014 71 Aaron Cresswell 9/18/2014 70 Aaron Cresswell 5/2/2014 70 A

我有一个数据集(许多玩家都有玩家姓名、一些玩家评级和评级发布日期,例如

Player  date           overall_rating
Aaron Cresswell 4/21/2016       74
Aaron Cresswell 12/5/2014       71
Aaron Cresswell 11/7/2014       71
Aaron Cresswell 9/18/2014       70
Aaron Cresswell 5/2/2014        70
Aaron Cresswell 4/4/2014        70
Aaron Cresswell 3/14/2014       70
Aaron Cresswell 12/13/2013      70
Aaron Cresswell 11/8/2013       70
Aaron Cresswell 10/4/2013       69
Aaron Cresswell 9/20/2013       69
Aaron Cresswell 5/3/2013        69
Aaron Cresswell 3/22/2013       69
Aaron Cresswell 3/15/2013       69
Aaron Cresswell 2/22/2013       69
Aaron Cresswell 2/15/2013       69
Aaron Cresswell 8/31/2012       68
Aaron Cresswell 2/22/2012       65
Aaron Cresswell 8/30/2011       64
Aaron Cresswell 8/30/2010       54
Aaron Cresswell 2/22/2010       51
Aaron Cresswell 8/30/2009       52
Aaron Cresswell 2/22/2009       47
Aaron Cresswell 8/30/2008       53
Aaron Cresswell 2/22/2007       53
Aaron Doran 1/7/2016        65
Aaron Doran 10/9/2015       66
Aaron Doran 9/21/2015       66
Aaron Doran 12/12/2014      67
Aaron Doran 9/18/2014       68
Aaron Doran 4/18/2014       68
Aaron Doran 3/14/2014       68
Aaron Doran 1/31/2014       69
Aaron Doran 11/29/2013      70
Aaron Doran 9/20/2013       71
Aaron Doran 5/31/2013       70
Aaron Doran 4/26/2013       70
Aaron Doran 4/19/2013       70
Aaron Doran 4/5/2013        70
Aaron Doran 3/22/2013       69
Aaron Doran 3/8/2013        69
Aaron Doran 2/15/2013       69
Aaron Doran 8/31/2012       65
Aaron Doran 2/22/2012       65
Aaron Doran 8/30/2011       65
Aaron Doran 2/22/2011       67
Aaron Doran 8/30/2010       67
Aaron Doran 2/22/2010       65
Aaron Doran 8/30/2009       65
Aaron Doran 2/22/2009       59
Aaron Doran 2/22/2007       59
Aaron Hughes    12/24/2015      70
Aaron Hughes    9/21/2015       70
Aaron Hughes    5/8/2015        69
Aaron Hughes    4/10/2015       69
Aaron Hughes    3/20/2015       70
Aaron Hughes    9/18/2014       72
Aaron Hughes    1/31/2014       72
Aaron Hughes    1/17/2014       72
Aaron Hughes    9/20/2013       73
Aaron Hughes    5/10/2013       73
Aaron Hughes    4/26/2013       74
Aaron Hughes    3/22/2013       74
Aaron Hughes    3/8/2013        74
Aaron Hughes    2/15/2013       74
Aaron Hughes    8/31/2012       74
Aaron Hughes    2/22/2012       75

我的问题是:如何做到这一点:如果日期介于(例如,2006年8月1日至2007年5月30日)之间,则在名为“季节”的新列中应显示“2006/2007”。由于一名球员可以在一个赛季中发布多个评级,因此我希望每个球员只保留每个赛季的最后一个评级。

您可以使用lubridate:

  library(lubridate) 
  library(data.table)
  start_date<-ymd("2006/08/01")
  end_date<-ymd("2007/05/30")
最后,您可以通过以下方式添加季节:

df$Season <-ifelse(between(df$date,start_date,end_date),paste0(year(start_date),"/",year(end_date)),"")

>df
   player       date rating    Season
 1 player1 2006-09-12      a 2006/2007
 2 player1 2007-08-01      b          
 3 player2 2007-07-03      c          

您可以使用lubridate:

  library(lubridate) 
  library(data.table)
  start_date<-ymd("2006/08/01")
  end_date<-ymd("2007/05/30")
最后,您可以通过以下方式添加季节:

df$Season <-ifelse(between(df$date,start_date,end_date),paste0(year(start_date),"/",year(end_date)),"")

>df
   player       date rating    Season
 1 player1 2006-09-12      a 2006/2007
 2 player1 2007-08-01      b          
 3 player2 2007-07-03      c          

下面是如何使用
dplyr
lubridate
来实现这一点。基本上,您希望创建一个季节列。如果评级的
小于或等于5,您希望季节为
-1/
。否则,季节将为
/
=+1。然后,您可以
进行分组按
球员和赛季进行分组,并使用
切片(n())选择最后一次评级

library(dplyr);library(lubridate)
df%>%
突变(日期=as.date(日期,“%m/%d/%Y”),
季节=ifelse(月(日)%
安排(日期)%>%
分组依据(球员、赛季)%>%
切片(n())
球员日期总评分季节
1 Aaron Cresswell 2007-02-22 53 2006/2007
2 Aaron Cresswell 2009-02-22 47 2008/2009
3 Aaron Cresswell 2010-02-22 51 2009/2010
4亚伦·克雷斯韦尔2010-08-30 54 2010/2011
5 Aaron Cresswell 2012-02-22 65 2011/2012
6 Aaron Cresswell 2013-05-03 69 2012/2013
7 Aaron Cresswell 2014-05-02 70 2013/2014
8 Aaron Cresswell 2014-12-05 71 2014/2015
9 Aaron Cresswell 2016-04-21 74 2015/2016
10亚伦·多兰2007-02-22 59 2006/2007
11亚伦·多兰2009-02-22 59 2008/2009
12亚伦·多兰2010-02-22 65 2009/2010
13亚伦·多兰2011-02-22 67 2010/2011
14亚伦·多兰2012-02-22 65 2011/2012
15亚伦·多兰2013-05-31 70 2012/2013
16亚伦·多兰2014-04-18 68 2013/2014
17亚伦·多兰2014-12-12 67 2014/2015
18亚伦·多兰2016-01-07 65 2015/2016
19亚伦休斯2012-02-22 75 2011/2012
20 Aaron Hughes 2013-05-10 73 2012/2013
21亚伦休斯2014-01-31 72 2013/2014
22亚伦休斯2015-05-08 69 2014/2015
23亚伦休斯2015-12-24 70 2015/2016
数据

df <- read.table(text='Player  date           overall_rating
"Aaron Cresswell" 4/21/2016       74
"Aaron Cresswell" 12/5/2014       71
"Aaron Cresswell" 11/7/2014       71
"Aaron Cresswell" 9/18/2014       70
"Aaron Cresswell" 5/2/2014        70
"Aaron Cresswell" 4/4/2014        70
"Aaron Cresswell" 3/14/2014       70
"Aaron Cresswell" 12/13/2013      70
"Aaron Cresswell" 11/8/2013       70
"Aaron Cresswell" 10/4/2013       69
"Aaron Cresswell" 9/20/2013       69
"Aaron Cresswell" 5/3/2013        69
"Aaron Cresswell" 3/22/2013       69
"Aaron Cresswell" 3/15/2013       69
"Aaron Cresswell" 2/22/2013       69
"Aaron Cresswell" 2/15/2013       69
"Aaron Cresswell" 8/31/2012       68
"Aaron Cresswell" 2/22/2012       65
"Aaron Cresswell" 8/30/2011       64
"Aaron Cresswell" 8/30/2010       54
"Aaron Cresswell" 2/22/2010       51
"Aaron Cresswell" 8/30/2009       52
"Aaron Cresswell" 2/22/2009       47
"Aaron Cresswell" 8/30/2008       53
"Aaron Cresswell" 2/22/2007       53
"Aaron Doran" 1/7/2016        65
"Aaron Doran" 10/9/2015       66
"Aaron Doran" 9/21/2015       66
"Aaron Doran" 12/12/2014      67
"Aaron Doran" 9/18/2014       68
"Aaron Doran" 4/18/2014       68
"Aaron Doran" 3/14/2014       68
"Aaron Doran" 1/31/2014       69
"Aaron Doran" 11/29/2013      70
"Aaron Doran" 9/20/2013       71
"Aaron Doran" 5/31/2013       70
"Aaron Doran" 4/26/2013       70
"Aaron Doran" 4/19/2013       70
"Aaron Doran" 4/5/2013        70
"Aaron Doran" 3/22/2013       69
"Aaron Doran" 3/8/2013        69
"Aaron Doran" 2/15/2013       69
"Aaron Doran" 8/31/2012       65
"Aaron Doran" 2/22/2012       65
"Aaron Doran" 8/30/2011       65
"Aaron Doran" 2/22/2011       67
"Aaron Doran" 8/30/2010       67
"Aaron Doran" 2/22/2010       65
"Aaron Doran" 8/30/2009       65
"Aaron Doran" 2/22/2009       59
"Aaron Doran" 2/22/2007       59
"Aaron Hughes"    12/24/2015      70
"Aaron Hughes"    9/21/2015       70
"Aaron Hughes"    5/8/2015        69
"Aaron Hughes"    4/10/2015       69
"Aaron Hughes"    3/20/2015       70
"Aaron Hughes"    9/18/2014       72
"Aaron Hughes"    1/31/2014       72
"Aaron Hughes"    1/17/2014       72
"Aaron Hughes"    9/20/2013       73
"Aaron Hughes"    5/10/2013       73
"Aaron Hughes"    4/26/2013       74
"Aaron Hughes"    3/22/2013       74
"Aaron Hughes"    3/8/2013        74
"Aaron Hughes"    2/15/2013       74
"Aaron Hughes"    8/31/2012       74
"Aaron Hughes"    2/22/2012       75',header=TRUE,stringsAsFactors=FALSE)

df下面是如何使用
dplyr
lubridate
来实现这一点。基本上,您希望创建一个季节列。如果评级的
小于或等于5,您希望季节为
-1/
。否则,季节将为
/
=+1。然后,您可以<代码>按球员和赛季分组,并使用
slice(n())

library(dplyr);library(lubridate)
df%>%
突变(日期=as.date(日期,“%m/%d/%Y”),
季节=ifelse(月(日)%
安排(日期)%>%
分组依据(球员、赛季)%>%
切片(n())
球员日期总评分季节
1 Aaron Cresswell 2007-02-22 53 2006/2007
2 Aaron Cresswell 2009-02-22 47 2008/2009
3 Aaron Cresswell 2010-02-22 51 2009/2010
4亚伦·克雷斯韦尔2010-08-30 54 2010/2011
5 Aaron Cresswell 2012-02-22 65 2011/2012
6 Aaron Cresswell 2013-05-03 69 2012/2013
7 Aaron Cresswell 2014-05-02 70 2013/2014
8 Aaron Cresswell 2014-12-05 71 2014/2015
9 Aaron Cresswell 2016-04-21 74 2015/2016
10亚伦·多兰2007-02-22 59 2006/2007
11亚伦·多兰2009-02-22 59 2008/2009
12亚伦·多兰2010-02-22 65 2009/2010
13亚伦·多兰2011-02-22 67 2010/2011
14亚伦·多兰2012-02-22 65 2011/2012
15亚伦·多兰2013-05-31 70 2012/2013
16亚伦·多兰2014-04-18 68 2013/2014
17亚伦·多兰2014-12-12 67 2014/2015
18亚伦·多兰2016-01-07 65 2015/2016
19亚伦休斯2012-02-22 75 2011/2012
20 Aaron Hughes 2013-05-10 73 2012/2013
21亚伦休斯2014-01-31 72 2013/2014
22亚伦休斯2015-05-08 69 2014/2015
23亚伦休斯2015-12-24 70 2015/2016
数据

df <- read.table(text='Player  date           overall_rating
"Aaron Cresswell" 4/21/2016       74
"Aaron Cresswell" 12/5/2014       71
"Aaron Cresswell" 11/7/2014       71
"Aaron Cresswell" 9/18/2014       70
"Aaron Cresswell" 5/2/2014        70
"Aaron Cresswell" 4/4/2014        70
"Aaron Cresswell" 3/14/2014       70
"Aaron Cresswell" 12/13/2013      70
"Aaron Cresswell" 11/8/2013       70
"Aaron Cresswell" 10/4/2013       69
"Aaron Cresswell" 9/20/2013       69
"Aaron Cresswell" 5/3/2013        69
"Aaron Cresswell" 3/22/2013       69
"Aaron Cresswell" 3/15/2013       69
"Aaron Cresswell" 2/22/2013       69
"Aaron Cresswell" 2/15/2013       69
"Aaron Cresswell" 8/31/2012       68
"Aaron Cresswell" 2/22/2012       65
"Aaron Cresswell" 8/30/2011       64
"Aaron Cresswell" 8/30/2010       54
"Aaron Cresswell" 2/22/2010       51
"Aaron Cresswell" 8/30/2009       52
"Aaron Cresswell" 2/22/2009       47
"Aaron Cresswell" 8/30/2008       53
"Aaron Cresswell" 2/22/2007       53
"Aaron Doran" 1/7/2016        65
"Aaron Doran" 10/9/2015       66
"Aaron Doran" 9/21/2015       66
"Aaron Doran" 12/12/2014      67
"Aaron Doran" 9/18/2014       68
"Aaron Doran" 4/18/2014       68
"Aaron Doran" 3/14/2014       68
"Aaron Doran" 1/31/2014       69
"Aaron Doran" 11/29/2013      70
"Aaron Doran" 9/20/2013       71
"Aaron Doran" 5/31/2013       70
"Aaron Doran" 4/26/2013       70
"Aaron Doran" 4/19/2013       70
"Aaron Doran" 4/5/2013        70
"Aaron Doran" 3/22/2013       69
"Aaron Doran" 3/8/2013        69
"Aaron Doran" 2/15/2013       69
"Aaron Doran" 8/31/2012       65
"Aaron Doran" 2/22/2012       65
"Aaron Doran" 8/30/2011       65
"Aaron Doran" 2/22/2011       67
"Aaron Doran" 8/30/2010       67
"Aaron Doran" 2/22/2010       65
"Aaron Doran" 8/30/2009       65
"Aaron Doran" 2/22/2009       59
"Aaron Doran" 2/22/2007       59
"Aaron Hughes"    12/24/2015      70
"Aaron Hughes"    9/21/2015       70
"Aaron Hughes"    5/8/2015        69
"Aaron Hughes"    4/10/2015       69
"Aaron Hughes"    3/20/2015       70
"Aaron Hughes"    9/18/2014       72
"Aaron Hughes"    1/31/2014       72
"Aaron Hughes"    1/17/2014       72
"Aaron Hughes"    9/20/2013       73
"Aaron Hughes"    5/10/2013       73
"Aaron Hughes"    4/26/2013       74
"Aaron Hughes"    3/22/2013       74
"Aaron Hughes"    3/8/2013        74
"Aaron Hughes"    2/15/2013       74
"Aaron Hughes"    8/31/2012       74
"Aaron Hughes"    2/22/2012       75',header=TRUE,stringsAsFactors=FALSE)

df请添加一些数据以获得人们的关注请添加一些数据以获得人们的关注你好,amonk,我感谢你的回答。但它似乎不起作用,它返回的只是“”我很感激它现在能起作用。我还有一个问题:我的日期是从2006年到2016年,也就是说,我应该简单地循环2006:2016来获得2006/2007……2015/2016赛季?谢谢you@dede请添加所有数据以便我们可以查看我添加了更多数据,也许这可以helpfull@dede我编辑了代码。请随意选择答案你好,我知道吃了你的答案。但它似乎不起作用,它只返回“”我很感激它现在能起作用。我还有一个问题:我的日期是从2006年到2016年,也就是说,我应该简单地循环2006:2016来获得2006/2007……2015/2016赛季?谢谢you@dede请添加所有数据以便我们可以查看我添加了更多数据,也许这可以helpfull@dede我编辑了代码。请随意选择我欣赏的答案这似乎是可行的,它解决了我的问题。我有一个问题,如何将它保存为一个新变量,因为当我查看df时,它显示了初始数据集?P Lapointe我添加了%>%data.frame()->df1,现在它似乎起作用了。再次感谢。P点我很感激。它似乎起作用了,它解决了我的问题。我有一个问题,如何将它保存为
df <- read.table(text='Player  date           overall_rating
"Aaron Cresswell" 4/21/2016       74
"Aaron Cresswell" 12/5/2014       71
"Aaron Cresswell" 11/7/2014       71
"Aaron Cresswell" 9/18/2014       70
"Aaron Cresswell" 5/2/2014        70
"Aaron Cresswell" 4/4/2014        70
"Aaron Cresswell" 3/14/2014       70
"Aaron Cresswell" 12/13/2013      70
"Aaron Cresswell" 11/8/2013       70
"Aaron Cresswell" 10/4/2013       69
"Aaron Cresswell" 9/20/2013       69
"Aaron Cresswell" 5/3/2013        69
"Aaron Cresswell" 3/22/2013       69
"Aaron Cresswell" 3/15/2013       69
"Aaron Cresswell" 2/22/2013       69
"Aaron Cresswell" 2/15/2013       69
"Aaron Cresswell" 8/31/2012       68
"Aaron Cresswell" 2/22/2012       65
"Aaron Cresswell" 8/30/2011       64
"Aaron Cresswell" 8/30/2010       54
"Aaron Cresswell" 2/22/2010       51
"Aaron Cresswell" 8/30/2009       52
"Aaron Cresswell" 2/22/2009       47
"Aaron Cresswell" 8/30/2008       53
"Aaron Cresswell" 2/22/2007       53
"Aaron Doran" 1/7/2016        65
"Aaron Doran" 10/9/2015       66
"Aaron Doran" 9/21/2015       66
"Aaron Doran" 12/12/2014      67
"Aaron Doran" 9/18/2014       68
"Aaron Doran" 4/18/2014       68
"Aaron Doran" 3/14/2014       68
"Aaron Doran" 1/31/2014       69
"Aaron Doran" 11/29/2013      70
"Aaron Doran" 9/20/2013       71
"Aaron Doran" 5/31/2013       70
"Aaron Doran" 4/26/2013       70
"Aaron Doran" 4/19/2013       70
"Aaron Doran" 4/5/2013        70
"Aaron Doran" 3/22/2013       69
"Aaron Doran" 3/8/2013        69
"Aaron Doran" 2/15/2013       69
"Aaron Doran" 8/31/2012       65
"Aaron Doran" 2/22/2012       65
"Aaron Doran" 8/30/2011       65
"Aaron Doran" 2/22/2011       67
"Aaron Doran" 8/30/2010       67
"Aaron Doran" 2/22/2010       65
"Aaron Doran" 8/30/2009       65
"Aaron Doran" 2/22/2009       59
"Aaron Doran" 2/22/2007       59
"Aaron Hughes"    12/24/2015      70
"Aaron Hughes"    9/21/2015       70
"Aaron Hughes"    5/8/2015        69
"Aaron Hughes"    4/10/2015       69
"Aaron Hughes"    3/20/2015       70
"Aaron Hughes"    9/18/2014       72
"Aaron Hughes"    1/31/2014       72
"Aaron Hughes"    1/17/2014       72
"Aaron Hughes"    9/20/2013       73
"Aaron Hughes"    5/10/2013       73
"Aaron Hughes"    4/26/2013       74
"Aaron Hughes"    3/22/2013       74
"Aaron Hughes"    3/8/2013        74
"Aaron Hughes"    2/15/2013       74
"Aaron Hughes"    8/31/2012       74
"Aaron Hughes"    2/22/2012       75',header=TRUE,stringsAsFactors=FALSE)