Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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中带有as.date的新变量_R_As.date - Fatal编程技术网

R中带有as.date的新变量

R中带有as.date的新变量,r,as.date,R,As.date,这是head(都是$stterm) 正如我所说,这只是数据集的一部分,我有4021个观测值。我想创建一个新列,每个日期代表一个值,如下所示 变量应该是连续的 我已经测试了as.date,但是我刚刚得到一个满是NULL的列 重要的是,它是2008-09-01=8,而不是08 "2007-09-01"=7, "2008-09-01"=8, "2009-01-19"=9, "2009-09-01"=9, "2010-01-19"=10, "2010-09-01"=10, "2011-01-19"=11

这是
head(都是$stterm)

正如我所说,这只是数据集的一部分,我有4021个观测值。我想创建一个新列,每个日期代表一个值,如下所示

变量应该是连续的

我已经测试了as.date,但是我刚刚得到一个满是NULL的列

重要的是,它是2008-09-01=8,而不是08

"2007-09-01"=7,
"2008-09-01"=8,
"2009-01-19"=9,
"2009-09-01"=9,
"2010-01-19"=10,
"2010-09-01"=10,
"2011-01-19"=11,
"2011-09-01"=11,
"2012-01-19"=12,
"2012-09-01"=12,
"2013-01-19"=13,
"2013-09-01"=13,
"2014-01-19"=14)
所以我想做的只是创建一个数字列,而不是实际日期。 新变量将被调用:
日历年。


我需要关于如何在R中写入此内容的提示。您可以按如下方式执行此操作:

require(lubridate)
dat$year <- year(as.Date(dat$stterm))-2000
数据:


dat您可以按如下方式执行此操作:

require(lubridate)
dat$year <- year(as.Date(dat$stterm))-2000
数据:


dat尝试
lubridate

install.packages(lubridate)
library(lubridate)
year(ymd(both$stterm))-2000

请尝试使用lubridate

install.packages(lubridate)
library(lubridate)
year(ymd(both$stterm))-2000
你可以试试这个

d <- as.Date(c("2007-09-01", "2008-09-01", "2009-01-19", "2009-09-01", "2010-01-19", "2010-09-01", "2011-01-19", "2011-09-01", "2012-01-19", "2012-09-01", "2013-01-19", "2013-09-01", "2014-01-19"), format="%Y-%m-%d")
sub("^0", "", sub("[[:digit:]]{2}([[:digit:]]{2}).*", "\\1", d))
 [1] "7"  "8"  "9"  "9"  "10" "10" "11" "11" "12" "12" "13" "13" "14"
d你可以试试这个

d <- as.Date(c("2007-09-01", "2008-09-01", "2009-01-19", "2009-09-01", "2010-01-19", "2010-09-01", "2011-01-19", "2011-09-01", "2012-01-19", "2012-09-01", "2013-01-19", "2013-09-01", "2014-01-19"), format="%Y-%m-%d")
sub("^0", "", sub("[[:digit:]]{2}([[:digit:]]{2}).*", "\\1", d))
 [1] "7"  "8"  "9"  "9"  "10" "10" "11" "11" "12" "12" "13" "13" "14"

d您可以尝试使用基本R执行此操作:
首先要复制数据集的子集:

both <- data.frame( stterm=as.Date(c('2011-01-19','2012-01-19', '2007-09-01','2011-09-01','2008-09-01','2013-09-01')))

both
      stterm
1 2011-01-19
2 2012-01-19
3 2007-09-01
4 2011-09-01
5 2008-09-01
6 2013-09-01

both$calenderyear <- as.numeric(format(both$stterm,"%y"))
both
      stterm calenderyear
1 2011-01-19           11
2 2012-01-19           12
3 2007-09-01            7
4 2011-09-01           11
5 2008-09-01            8
6 2013-09-01           13

两个您可以尝试使用base R执行此操作:
首先要复制数据集的子集:

both <- data.frame( stterm=as.Date(c('2011-01-19','2012-01-19', '2007-09-01','2011-09-01','2008-09-01','2013-09-01')))

both
      stterm
1 2011-01-19
2 2012-01-19
3 2007-09-01
4 2011-09-01
5 2008-09-01
6 2013-09-01

both$calenderyear <- as.numeric(format(both$stterm,"%y"))
both
      stterm calenderyear
1 2011-01-19           11
2 2012-01-19           12
3 2007-09-01            7
4 2011-09-01           11
5 2008-09-01            8
6 2013-09-01           13
两者