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
两者