2016-01-06 46 views
-1

我有兩個數據集,包括時間序列。根據匹配日期合併到數據集

在數據集1中,有3列:Date,price changes,volume。 1056行按日期排序,從01-01-2005開始到31-12-2015

在數據集2中,有3列:Date,price changes,volume。以及從01-01-200531-12-2015開始的日期排序的1028行。 但只有 1028行,因爲缺少數據(即缺少行)。

我想在數據集沒有出現在數據集中的日期擦除1行2

我都試過,但它不工作:

dataset1[!rownames(dataset1) %in% dataset2$Date, ] 

輸出有1056行,所以它不會擦除任何東西。

+2

是行'dataset1'用日期命名的?另外,我不明白你爲什麼用'!'否定。 'dataset1 [dataset1 $ date%in%dataset2 $ Date,]' – Cath

+0

你也可以試試'dataset1 [which(dataset1 $ Date == dataset2 $ Date),]' – ruchijain90

+0

Thak you very much @天使!有效!! – jonyjon

回答

2

您需要做的僅僅dataset1[dataset1$Date %in% dataset2$Date, ]

set.seed(1) 
d1 <- as.Date('2015-01-01') + 0:10 
x <- sample(1:10, 11, replace = TRUE) 
df1 <- data.frame(d1, x) 
      d1 x 
1 2015-01-01 3 
2 2015-01-02 4 
3 2015-01-03 6 
4 2015-01-04 10 
5 2015-01-05 3 
6 2015-01-06 9 
7 2015-01-07 10 
8 2015-01-08 7 
9 2015-01-09 7 
10 2015-01-10 1 
11 2015-01-11 3 
d2 <- as.Date('2015-01-01') + seq(0, 10, 3) 
y <- sample(1:10, 4) 
df2 <- data.frame(d2, y) 
df1[df1$d1 %in% df2$d2, ] 
      d1 x 
1 2015-01-01 3 
4 2015-01-04 10 
7 2015-01-07 10 
10 2015-01-10 1 
+0

非常感謝,但是我用了@ CathG的解決方案,它有點短了) – jonyjon

+3

@jonyjon,就我所知,這個解決方案和CathG的解決方案是一樣的,所以不知道你的意思。如果這對你有用,你也可以[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)作爲對這一努力的讚賞的姿態。 –

+0

@大衛·阿倫堡,很抱歉,我是這裏的新成員。我不知道那件事。但現在完成了:) – jonyjon