Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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_Date_Leap Year - Fatal编程技术网

使用R获取一年中所有天数的向量

使用R获取一年中所有天数的向量,r,date,leap-year,R,Date,Leap Year,是否有一个简单的R习语来表示给定年份中的天数向量?我可以做下面的事情,这很好。。。闰年除外: dtt <- as.Date( paste( as.character(year), "-1-1", sep="") ) + seq( 0,364 ) dtt这个呢: R> length(seq( as.Date("2004-01-01"), as.Date("2004-12-31"), by="+1 day")) [1] 366 R> length(seq( as.Date("20

是否有一个简单的R习语来表示给定年份中的天数向量?我可以做下面的事情,这很好。。。闰年除外:

dtt <- as.Date( paste( as.character(year), "-1-1", sep="") ) + seq( 0,364 )
dtt这个呢:

R> length(seq( as.Date("2004-01-01"), as.Date("2004-12-31"), by="+1 day"))
[1] 366
R> length(seq( as.Date("2005-01-01"), as.Date("2005-12-31"), by="+1 day"))
[1] 365
R> 

这将使用nuttin'但以R为基数来正确计算日期,从而得到向量。如果您需要更高级别的运算符,请查看(例如)或甚至我的更基本的运算符,它包含了Boost Time_Date library的一部分。

根据德克的指导,我已经解决了以下问题:

getDays <- function(year){
     seq(as.Date(paste(year, "-01-01", sep="")), as.Date(paste(year, "-12-31", sep="")), by="+1 day")
}

getDays我很想知道将序列和演员阵容转换为.Date是否会更快:

# My function getDays
getDays_1 <- function(year) {
  d1 <- as.Date(paste(year, '-01-01', sep = ''));
  d2 <- as.Date(paste(year, '-12-31', sep = ''));
  as.Date(d1:d2, origin = '1970-01-01');
};

# other getDays
getDays_2 <- function(year) {      
  seq(as.Date(paste(year, '-01-01', sep='')), 
      as.Date(paste(year, '-12-31', sep='')), 
      by = '+1 day');
};

test_getDays_1 <- function(n = 10000) {
  for(i in 1:n) {
    getDays_1(2000);
  };
};

test_getDays_2 <- function(n = 10000) {
  for(i in 1:n) {
    getDays_2(2000);
  };
};

system.time(test_getDays_1());
# user  system elapsed 
# 4.80    0.00    4.81 

system.time(test_getDays_2());
# user  system elapsed 
# 4.52    0.00    4.53 
#我的函数getDays

getDays_1我需要类似的东西,但是对于一系列日期,我想知道那一年的天数。我提出了以下函数,它返回一个与输入中的日期长度相同的向量

days_in_year <- function(dates) {
    years <- year(dates)
    days <- table(year(seq(as.Date(paste0(min(years), '-01-01')),
                           as.Date(paste0(max(years), '-12-31')),
                           by = '+1 day')))
    as.vector(days[as.character(years)])
}

一年中的
天只需在第二个
日期之后添加一个
-1
。不错,我没想到。这确实会解决问题。想想看,反正我也可以用20xx-12-31。我是个宽宏大量的家伙;)