我无法找到POSIXct格式的问题解决方案 - 我有月度数据。这是我的代码的一小部分:
Data <- as.POSIXct(as.character(czerwiec$Data), format = "%Y-%m-%d %H:%M:%S")
get.rows <- Data >= as.POSIXct(as.character("2013-06-03 00:00:01")) & Data <= as.POSIXct(as.character("2013-06-09 23:59:59"))
czerwiec <- czerwiec[get.rows,]
Data <- Data[get.rows]
我选择从6月3到9月的一个洞一周,并希望每小时估算一列X(czerwiec$X
)的总和。如你所见,我可以减少时间,但这样做会很愚蠢,就像这样
get.rows <- Data >= as.POSIXct(as.character("2013-06-03 00:00:01")) &
Data <= as.POSIXct(as.character("2013-06-03 00:59:59"))
然后
get.rows <- Data >= as.POSIXct(as.character("2013-06-04 00:00:01")) &
Data <= as.POSIXct(as.character("2013-06-04 00:59:59"))
在这次行动结束时,我可以估计这个小时的总和等。
你有什么想法,我怎么回忆每一行,有时间像2013-06-03到2013-06-09和00:00:01到00:59:59 ??
有关数据框“czerwiec”的内容,所以我有三列,首先调用“ID”,第二个“价格”和第三个“数据”(表示日期)。
寻求帮助:)
答案 0 :(得分:0)
这可能会有所帮助。我已经使用了lubridate
软件包,它在基础R中没有做任何你不能做的事情,但它使处理日期更容易
# Set up Data as a string vector
Data <- c("2013-06-01 05:05:05", "2013-06-06 05:05:05", "2013-06-06 08:10:05", "2013-07-07 05:05:05")
require(lubridate)
# Set up the data frame with fake data. This makes a reproducible example
set.seed(4) #For reproducibility, always set the seed when using random numbers
# Create a data frame with Data and price
czerwiec <- data.frame(price=runif(4))
# Use lubridate to turn the Data string into a vector of POSIXctn objects
czerwiec$Data <- ymd_hms(Data)
# Determine the 'yearday' -i.e. yearday of Jan 1 is 1; yearday of Dec 31 is 365 (or 366 in a leap year)
czerwiec$yday <- yday(czerwiec$Data)
# in.range is true if the date is in the desired date range
czerwiec$in.range <- czerwiec$yday[czerwiec$yday >= yday(ymd("2013-06-03")) &
czerwiec$yday yday(ymd("2013-06-09")]
# Pick out the dates that have the range that you want
selected_dates <- subset(czerwiec, in.range==TRUE)