0

我找不到 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 日的一个洞周,并想czerwiec$X按每个小时估算 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”,第二个“价格”和第三个“数据”(表示日期)。

谢谢帮助:)

4

1 回答 1

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)
于 2013-08-31T12:50:10.993 回答