回顾日期POSIXct

时间:2013-08-30 14:09:54

标签: r posixct

我无法找到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”,第二个“价格”和第三个“数据”(表示日期)。

寻求帮助:)

1 个答案:

答案 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)