作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这看起来应该容易得多,我相信有人可以帮助我。我试图使用 lubridate 包中的 Floor_date() 将日期的 data.frame 中的每个日期更改为相应月份的第一天,但是其中一些日期是 NA。我不想用虚拟日期代替 NA。
我尝试过以下方法:
library(lubridate)
a<-c(as.Date("2011-05-04"), as.Date("2011-06-12"))
b<-c(as.Date("2012-03-01"), NA)
test <- data.frame(a,b)
apply(test, 1, function(y) sapply(y, function(x) if(!is.na(x)) floor_date(x, "month") else na.pass(x)))
apply(test, 1, function(y) ifelse(!is.na(y)), floor_date(y, "month"), na.pass(y))
第一个调用返回:
Error in object[[name, exact = TRUE]] : subscript out of bounds
第二个调用返回:
Error in update.default(x, mdays = 1, hours = 0, minutes = 0, seconds = 0) :
need an object with call component
感谢您的帮助!
最佳答案
我不知道 lubridate,但您可以使用 base R 提供的出色的日期处理工具轻松完成此操作。
这里有一个小辅助函数,可以毫无怨言地执行您想要的计算:
firstOfMonth <- function(dates) {
as.Date(strftime(dates, format="%Y-%m-01"))
}
firstOfMonth(a)
# [1] "2011-05-01" "2011-06-01"
firstOfMonth(b)
# [1] "2012-03-01" NA
data.frame(lapply(test, firstOfMonth))
# a b
# 1 2011-05-01 2012-03-01
# 2 2011-06-01 <NA>
关于r - 使用 apply 转换 R 中的日期并处理 NA 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9574257/
我是一名优秀的程序员,十分优秀!