查找指定日期范围内的xts列的最大值

时间:2017-11-05 20:39:55

标签: r max xts

我想找到最高的'高'我可以指定的两个日期范围之间的列。例如,2017-09-012017-09-04之间的最大值为1.29444

这是我的数据

              Open    High     Low   Close
2017-09-01 1.29360 1.29951 1.29052 1.29495
2017-09-03 1.29600 1.29660 1.29444 1.29535
2017-09-04 1.29536 1.29643 1.29124 1.29300
2017-09-05 1.29306 1.30440 1.29088 1.30331
2017-09-06 1.30331 1.30820 1.30181 1.30471
2017-09-07 1.30472 1.31381 1.30325 1.31319
2017-09-08 1.31319 1.32239 1.31233 1.31945
2017-09-10 1.31816 1.31978 1.31736 1.31769
2017-09-11 1.31769 1.32223 1.31593 1.31764
2017-09-12 1.31766 1.33145 1.31703 1.33097
2017-09-13 1.33096 1.33286 1.31836 1.32040
2017-09-14 1.32039 1.34055 1.31501 1.33955
2017-09-15 1.33955 1.36159 1.33922 1.35871
2017-09-17 1.35579 1.36029 1.35579 1.35921
2017-09-18 1.35921 1.36181 1.34646 1.35176
2017-09-19 1.35176 1.35515 1.34683 1.35178
2017-09-20 1.35178 1.36573 1.34517 1.34914
2017-09-21 1.34914 1.35861 1.34706 1.35761
2017-09-22 1.35760 1.35955 1.34496 1.34935
2017-09-24 1.34872 1.35339 1.34832 1.35261
2017-09-25 1.35262 1.35706 1.34308 1.34816
2017-09-26 1.34816 1.35139 1.34094 1.34385
2017-09-27 1.34386 1.34389 1.33634 1.33753
2017-09-28 1.33754 1.34551 1.33427 1.34159
2017-09-29 1.34160 1.34258 1.33497 1.33963

2 个答案:

答案 0 :(得分:3)

您可以使用" YYYY-MM-DD / YYYY-MM-DD"中的字符串日期在xts内轻松地对数据进行子集化格式。因此,高列的最大值将是:

max(df.xts$High["2017-09-01/2017-09-04"])

如果您的数据位于名为df.xts的数据框中。如果数据集中有NA值,您还可以将na.rm=T参数添加到max函数中,这将排除那些计算最大值而不是返回NA的值。

答案 1 :(得分:0)

您的日期列是否存储为行号? 也许想以我们拥有Date列的方式加载数据。然后这将有效。

#Ensure Date Column is in Date format: 
library(lubridate) 
df$Date <- ymd(df$date) 

# Subset by date
new.df <- subset(df, Date >= as.POSIXct("2017-09-01") & Date <= as.POSIXct("2017-09-04")) 

# Find max
max(new.df$High)