R 从xts对象中删除重复行

R 从xts对象中删除重复行,r,finance,xts,quantitative,R,Finance,Xts,Quantitative,我在删除xts对象中的重复行时遇到问题。我有一个R脚本,可以下载货币的tick财务数据,并将其转换为OHLC格式的xts对象。该脚本还每隔15分钟提取一次新数据。新数据从今天的第一笔交易下载到今天记录的最后一笔交易。以前下载的旧数据以.Rdata格式存储并调用。然后将新数据添加到旧数据中,并以.Rdata格式覆盖旧数据 以下是我的数据的示例: .Open .High .Low .Close .Volume .Adjusted 2012-

我在删除xts对象中的重复行时遇到问题。我有一个R脚本,可以下载货币的tick财务数据,并将其转换为OHLC格式的xts对象。该脚本还每隔15分钟提取一次新数据。新数据从今天的第一笔交易下载到今天记录的最后一笔交易。以前下载的旧数据以.Rdata格式存储并调用。然后将新数据添加到旧数据中,并以.Rdata格式覆盖旧数据

以下是我的数据的示例:

                      .Open   .High    .Low  .Close   .Volume .Adjusted
2012-01-07 00:00:11 6.69683 7.01556 6.38000 6.81000  48387.58   6.81000
2012-01-08 00:00:09 6.78660 7.20000 6.73357 7.11358  57193.53   7.11358
2012-01-09 00:00:57 7.08362 7.19100 5.81000 6.32570 148406.85   6.32570
2012-01-10 00:01:01 6.32687 6.89000 6.00100 6.36000 110210.25   6.36000
2012-01-11 00:00:07 6.44904 7.13800 6.41266 6.90000  99442.07   6.90000
2012-01-12 00:01:02 6.90000 6.99700 6.33700 6.79999 140116.52   6.79999
2012-01-13 00:02:01 6.78211 6.80400 6.40000 6.41000  60228.77   6.41000
2012-01-14 00:00:23 6.42000 6.50000 6.23150 6.31894  25392.98   6.31894
现在,如果我再次运行脚本,我将向xts添加新数据

                      .Open   .High    .Low  .Close   .Volume .Adjusted
2012-01-07 00:00:11 6.69683 7.01556 6.38000 6.81000  48387.58   6.81000
2012-01-08 00:00:09 6.78660 7.20000 6.73357 7.11358  57193.53   7.11358
2012-01-09 00:00:57 7.08362 7.19100 5.81000 6.32570 148406.85   6.32570
2012-01-10 00:01:01 6.32687 6.89000 6.00100 6.36000 110210.25   6.36000
2012-01-11 00:00:07 6.44904 7.13800 6.41266 6.90000  99442.07   6.90000
2012-01-12 00:01:02 6.90000 6.99700 6.33700 6.79999 140116.52   6.79999
2012-01-13 00:02:01 6.78211 6.80400 6.40000 6.41000  60228.77   6.41000
2012-01-14 00:00:23 6.42000 6.50000 6.23150 6.31894  25392.98   6.31894
2012-01-14 00:00:23 6.42000 6.75000 6.22010 6.57157  75952.01   6.57157
如您所见,最后一行与倒数第二行的日期相同。我想将最后一行保留为最后一个日期,并删除倒数第二行。当我尝试用下面的代码删除重复的行时,它不起作用,重复的行会留在那里

xx <- mt.xts[!duplicated(mt.xts$Index),]
xx
.Open .High .Low .Close .Volume .Adjusted
xx应该是
index(mt.xts)
而不是
mt.xts$index
? 下面的方法似乎有效

# Sample data
library(xts)
x <- xts( 
  1:10, 
  rep( seq.Date( Sys.Date(), by="day", length=5 ), each=2 ) 
)

# Remove rows with a duplicated timestamp
y <- x[ ! duplicated( index(x) ),  ]

# Remove rows with a duplicated timestamp, but keep the latest one
z <- x[ ! duplicated( index(x), fromLast = TRUE ),  ]
#示例数据
图书馆(xts)
在我的例子中

x <- x[! duplicated( index(x) ),]

x也许你的意思是
!重复(mt.xts)
?我想我需要找到一种基于row.name的删除方法,或者使用.Open和.Adjusted作为重复行的指示符。使用索引将是最好的,因为将来可能会有机会在不同的日期使用相同的未结值和调整值。@joran When I do xx=!重复(mt.xts)我只得到一个逻辑向量。在我之前所做的一次使用中,它似乎有效,但它们的对象不是xts。对不起,我不知道我在想什么。我无法使用.Adjusted来确定重复行。因为这是货币数据,所以它与。close相同。是的,这基本上就是我要说的。这可以消除重复的行。唯一的问题是它会删除末尾的重复行。当我添加新数据时,我希望它删除以前的重复行。我正在考虑使用lag(),例如,apply(lag(x$.Open,-1)=x$.Open,1,all)
duplicated
有一个
fromLast
参数,可以这样做:我已经相应地编辑了答案。文森特,你是对的,它工作得很好,x[!duplicated(index(x),fromLast=TRUE)]
x <- x[! duplicated( coredata(x) ),]