r - 使用合并函数从 xts 对象获取最大值

标签 r merge xts quantmod

您好,我正在使用 R quantmod 库,我想找到并返回两个值中的最大值(今天的交易量与昨天的交易量)。

require(quantmod)
getSymbols("HELE")
# Ok now when I do this it does not return a single column with the highest 
# volume 
head(    merge( HELE, max (HELE$HELE.Volume,lag(HELE$HELE.Volume, k=1    )  ) ) )

这通常有效,因为例如我想从昨天的收盘价中减去今天的高点,我可以这样做。

head(    merge(HELE, abs(HELE$HELE.High - lag(HELE$HELE.Close, k=1)   ) ) )

我也试过 apply 功能,但效果不佳,

head(    merge(HELE, as.xts(apply( c(lag(HELE$HELE.Volume, k=1    ), HELE$HELE.Volume    ), 1, max) )      ) )

提前致谢。 阿迪

最佳答案

试试这个:

head(merge(HELE, pmax (HELE$HELE.Volume,lag(HELE$HELE.Volume, k=1), na.rm=TRUE)))

pmaxmax 的矢量化版本,即它找到两个向量之间的成对 max。您还需要包含一个 na.rm=TRUE,否则您最终会在缺少值的地方得到 NA。

仅使用 max 它将找到两个向量之间的全局最大值并创建一个仅填充该值的列。

输出:

> head(merge( HELE, pmax (HELE$HELE.Volume,lag(HELE$HELE.Volume, k=1 )  , na.rm=T) ) )
           HELE.Open HELE.High HELE.Low HELE.Close HELE.Volume HELE.Adjusted HELE.Volume.1
2007-01-03     24.25     25.16    24.25      25.12      251800         25.12        251800
2007-01-04     25.15     25.50    25.06      25.49      224400         25.49        251800
2007-01-05     25.45     25.50    24.78      24.93      289700         24.93        289700
2007-01-08     24.82     25.19    24.65      24.69      285000         24.69        289700
2007-01-09     21.84     22.60    21.75      22.19     1534800         22.19       1534800
2007-01-10     22.11     22.50    21.87      22.45      293600         22.45       1534800

关于r - 使用合并函数从 xts 对象获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30226149/

相关文章:

r - 将ggplot2网格导出为PDF错误: 'Error in grid.Call.graphics... invalid font type'

r - 滑动 (io2012) : how to change the slide size according to screen resolution?

macos - 将 RTF 文件与 Cocoa 合并

R:在 R 中将数据框(混合因子和数字)转换为 XTS

r - 在 R : month abbreviated "dd-mmm-YYYY" 中将字符串转换为日期

sql - 将数据框与左侧或右侧的 Pandas 合并

git 从过去的 merge 中获取冲突而无需再次运行 merge

r - xts中的后缀合并到R中

r - 创建具有自定义开始时间的每日 OHLC

r - 查找字符串向量的所有唯一组合的幂集