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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/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 从日期序列中删除闰日_R_Date - Fatal编程技术网

R 从日期序列中删除闰日

R 从日期序列中删除闰日,r,date,R,Date,我试图从我的日期序列中删除闰日,但是,我得到了错误。请帮忙 Dates=as.data.frame(seq(as.Date("1979-01-01"), to=as.Date("2016-12-31"),by="days")) names(Dates)= "Dates" Dates$year=as.numeric(format(Dates$Dates, "%Y")) Dates$month=as.

我试图从我的日期序列中删除闰日,但是,我得到了错误。请帮忙

Dates=as.data.frame(seq(as.Date("1979-01-01"), to=as.Date("2016-12-31"),by="days"))
names(Dates)= "Dates"
Dates$year=as.numeric(format(Dates$Dates, "%Y"))
Dates$month=as.numeric(format(Dates$Dates, "%m"))
Dates$day=as.numeric(format(Dates$Dates, "%d"))

if [(Dates$month == 2 & Dates$day == 29)]
    Dates=Dates[]

不带闰日的日期序列

您可以通过各种软件包获得大量答案,但您可以使用base R和
format()
函数来实现这一点。提取月份和日期,然后使用否定来排除闰日期:

myDates <- myDates[!(format(myDates$Dates,"%m") == "02" & format(myDates$Dates, "%d") == "29"), , drop = FALSE]

由(v0.2.1)创建于2019-04-08可能您弄乱了数据帧和向量?可以考虑下面的代码和库<代码> TiyVIEWS <代码>和<代码>库(LuBrutt)< /C> >:


库(lubridate);日期[!(月(日期$日期)==2天(日期$日期)==29),]
PCICt软件包有一个365天的POSIXct类课程。感谢大家帮助解决这个问题。有一些好的建议可以尝试。您好,谢谢您的关注。我想要的是没有闰日的日期序列,即运行代码后,我应该得到13870个观测值,而不是13880个观测值,因为从1979年到2016年有10个闰年。@Hydrologist-上面的代码符合您的要求;见上文,谢谢。这将给我的日期序列闰年。我想删除闰日。@水文学家,只需添加
反向选择:
日期[!查找(日期)]
。希望有帮助。
> Dates=seq(as.Date("1979-01-01"), to=as.Date("2016-12-31"),by="days")
> find_leap = function(x){
+   day(x) == 29 & month(x) == 2 
+ }
> 
> Dates[find_leap(Dates)]
 [1] "1980-02-29" "1984-02-29" "1988-02-29" "1992-02-29" "1996-02-29"
 [6] "2000-02-29" "2004-02-29" "2008-02-29" "2012-02-29" "2016-02-29"