2015-04-10 2 views
0

Например, если x является матрицей двух переменных (время и X, длина равна len1), а y - матрица двух переменных (время и Y , длина len2), я просто хочу, чтобы объединить й и у, используя следующий код:Почему результат слияния функции больше, чем исходные данные

> x 
       Time Value 
1 2013-11-03 00:00:11 535.7680 
2 2013-11-03 00:00:26 548.6214 
3 2013-11-03 00:00:41 543.6477 
4 2013-11-03 00:00:56 554.0778 
5 2013-11-03 00:01:11 566.5635 
6 2013-11-03 00:01:26 555.7684 
> y 
       Time Value 
1 2013-11-03 00:00:11 455.4087 
2 2013-11-03 00:00:26 457.7967 
3 2013-11-03 00:00:41 455.3263 
4 2013-11-03 00:00:56 461.9727 
5 2013-11-03 00:01:11 460.6974 
6 2013-11-03 00:01:26 466.2654 

res<-merge(x,y,by="Time") 
> res 
       Time Value.x Value.y 
1 2013-11-03 00:00:11 535.7680 455.4087 
2 2013-11-03 00:00:26 548.6214 457.7967 
3 2013-11-03 00:00:41 543.6477 455.3263 
4 2013-11-03 00:00:56 554.0778 461.9727 
5 2013-11-03 00:01:11 566.5635 460.6974 
6 2013-11-03 00:01:26 555.7684 466.2654 

Я просто использовать голова x и y

почему длину Реза больше len1 решил и len2

Я просто хочу знать, как объединить xa й у того же лаг «Время», х и у различной лаг «Time» удаляется

+0

Обеспечить [воспроизводимые данные] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Пробовали фиктивные данные, а 'nrow (res)' меньше, чем 'nrow (x)' и 'nrow (y)'. – zx8754

+0

@ DominicComtois По умолчанию для merge является 'all = FALSE'. – zx8754

+0

Сравните, как для x, так и для y, 'length (x $ Time)' и 'length (unique (x $ Time))' - тогда вы увидите, что, возможно, некоторые времена дублируются, объясняя больший объем полученного результирующего фрейма , –

ответ

0

На странице справки о merge:

строки в двух данных кадров, которые спичка на указанные столбцы извлекаются и объединяются вместе. Если имеется более одного совпадения, все возможные совпадения вносят по одной строке.

Без воспроизводимого примера Я не могу сказать точно, но вполне вероятно, что ваш столбец Time содержит дублированные значения. Смотри, например, следующий пример:

A <- data.frame(a=c(1,2,3,1),b=1:4) 
B <- data.frame(a=c(1,2,3,1),c=1:4) 
merge(A,B,by="a") 
    a b c 
1 1 1 1 
2 1 1 4 
3 1 4 1 
4 1 4 4 
5 2 2 2 
6 3 3 3 
+0

Я новый в stackoverflow , как я могу загрузить данные? В данных время отличается, может быть, это не проблема. – Cheng

+0

См. Http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example. – plannapus

+0

Простейшим было бы вставить результат 'dput (x)' и 'dput (y)' в ваш вопрос. – plannapus

Смежные вопросы