【发布时间】:2017-03-12 07:23:25
【问题描述】:
我有两个包含时间序列数据的数据框。
我想按时合并这两个数据。我使用了以下命令:
m=merge(mydata7,mydata1,by="times",all =TRUE)
现在你可以看到它缺少来自mydate1 的时间 07:02 我不明白为什么它缺少这个.. 我希望将数据和缺少的字段都替换为以前的值而不是 NA
这是数据:
mydata1 =
structure(list(times = structure(c(2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 1L, 20L,
21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L,
34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L),
.Label = c("4/1/2016 11:02",
"4/1/2016 7:02", "4/1/2016 7:12", "4/1/2016 7:22", "4/1/2016 7:32",
"4/1/2016 7:42", "4/1/2016 7:52", "4/1/2016 8:02", "4/1/2016 8:12",
"4/1/2016 8:22", "4/1/2016 8:32", "4/1/2016 8:42", "4/1/2016 8:52",
"4/1/2016 9:02", "4/1/2016 9:12", "4/1/2016 9:22", "4/1/2016 9:32",
"4/1/2016 9:42", "4/1/2016 9:52", "4/4/2016 3:40", "4/4/2016 3:50",
"4/4/2016 4:00", "4/4/2016 4:10", "4/4/2016 4:20", "4/4/2016 4:30",
"4/4/2016 4:40", "4/4/2016 4:50", "4/4/2016 5:00", "4/4/2016 5:10",
"4/4/2016 5:20", "4/4/2016 5:30", "4/4/2016 5:40", "4/4/2016 5:50",
"4/4/2016 6:00", "4/4/2016 6:10", "4/4/2016 6:20", "4/4/2016 6:30",
"4/4/2016 6:40", "4/4/2016 6:50", "4/4/2016 7:00", "4/4/2016 7:10",
"4/4/2016 7:20"), class = "factor"),
Open = c(16.72278698, 15.97135403,
16.2502484, 16.86737499, 17.38982271, 17.06200904, 16.35144742,
16.6608737, 17.40656438, 18.19878622, 18.4953396, 17.44738486,
18.03041568, 17.86379046, 17.37890132, 17.8113319, 18.37371163,
17.5946693, 17.88193098, 15.26577796, 17.787945, 17.56781029,
16.61562991, 17.20046034, 17.92410221, 17.90279521, 16.68541461,
15.6198332, 15.66647794, 15.61947799, 15.91357169, 16.16975574,
16.10266875, 16.48827516, 16.26887133, 16.00361772, 15.70874174,
16.33110122, 14.98407633, 14.83423362, 15.43892116, 14.06661966),
High = c(16.61218206, 16.30941276, 16.46179687, 17.73242121,
17.40803494, 16.69500997, 17.12121055, 17.24161281, 18.02573482,
18.25816418, 17.89118875, 17.39486004, 18.58667227, 17.75906328,
18.30440156, 18.18327367, 18.22871169, 17.99796892, 18.28241531,
17.31179538, 17.50683646, 17.13081502, 17.50058581, 18.17055388,
17.37001367, 17.70375921, 16.12400885, 17.02340347, 15.91559658,
16.45389754, 16.048561, 16.51394532, 15.91181307, 15.8907224,
15.32549299, 16.27648947, 16.27259065, 16.02847019, 15.0412349,
15.03729263, 14.70711405, 15.76516567),
Low = c(15.82402235,
15.37087088, 15.75891471, 16.29799388, 16.40233601, 16.21816259,
16.86277766, 16.46255269, 16.99852627, 17.71896219, 17.77013371,
16.61218982, 17.7642859, 17.87430506, 17.60668581, 17.78581347,
16.91537413, 17.02232271, 17.79010116, 15.33341039, 17.26249235,
17.33426018, 17.39939759, 17.38078114, 17.61103373, 15.63631299,
16.14795684, 16.17203088, 15.05033241, 15.76103829, 16.40251489,
16.23931193, 16.34181598, 16.23077018, 15.65055291, 15.80244449,
16.31863567, 15.59777869, 15.09157678, 14.97958773, 14.67132113,
15.00236144),
close = c(16.16988373, 16.45107987, 16.0544984,
17.4521672, 17.1385357, 16.99446459, 16.85593712, 16.39238298,
18.3873355, 17.43757583, 18.14751919, 17.17169022, 17.48942926,
18.26623319, 17.72940093, 17.74653901, 17.39591443, 17.02606496,
18.00364352, 18.07080708, 17.69129909, 16.68539826, 17.83899938,
17.53001623, 17.07814804, 16.14477252, 15.67105975, 16.01777995,
16.03061899, 15.77042054, 16.46061514, 16.08259587, 16.06298954,
16.62616704, 15.44284088, 15.85393503, 16.04520034, 15.0713808,
15.60909829, 15.39263265, 14.80231501, 15.43489693)),
.Names = c("times", "Open", "High", "Low", "close"),
class = "data.frame", row.names = c(NA, -42L))
mydata7 =
structure(list(times = structure(c(2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 1L, 17L, 18L, 19L, 20L,
21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L,
34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L), .Label = c("4/1/2016 11:01",
"4/1/2016 7:01", "4/1/2016 7:11", "4/1/2016 7:21", "4/1/2016 7:31",
"4/1/2016 7:41", "4/1/2016 8:21", "4/1/2016 8:31", "4/1/2016 8:41",
"4/1/2016 8:51", "4/1/2016 9:01", "4/1/2016 9:11", "4/1/2016 9:21",
"4/1/2016 9:31", "4/1/2016 9:41", "4/1/2016 9:51", "4/4/2016 3:45",
"4/4/2016 3:55", "4/4/2016 4:05", "4/4/2016 4:25", "4/4/2016 4:35",
"4/4/2016 4:45", "4/4/2016 5:05", "4/4/2016 5:15", "4/4/2016 6:05",
"4/4/2016 6:45", "4/4/2016 7:05", "4/4/2016 7:15", "4/4/2016 7:25",
"4/4/2016 7:35", "4/4/2016 7:45", "4/4/2016 7:55", "4/4/2016 8:15",
"4/4/2016 8:25", "4/4/2016 8:45", "4/4/2016 8:55", "4/4/2016 9:15",
"4/4/2016 9:25", "4/4/2016 9:35", "4/4/2016 9:45", "4/4/2016 9:55"
), class = "factor"), Open = c(451.1886228, 449.4212867, 451.4615165,
451.1482766, 452.3053128, 451.5482317, 454.4575053, 453.9436549,
453.1828612, 454.4282375, 454.6100063, 453.6519749, 454.0431538,
452.8947017, 453.4831806, 452.8326541, 455.8985985, 452.2680598,
453.2629865, 453.4039409, 453.2160163, 452.4927456, 451.8070642,
449.3808479, 450.6853928, 449.3944732, 447.7458839, 447.6836593,
448.3455733, 447.9036679, 447.1341682, 447.5492552, 447.7067299,
448.2253611, 449.2601729, 448.0682437, 448.8729166, 449.2426588,
450.5222366, 449.4723271, 450.0636792), High = c(450.8124209,
449.272124, 450.9626045, 451.2204223, 451.9714763, 454.4935027,
455.5178115, 453.2423269, 453.194444, 454.5951709, 454.1375549,
453.4393663, 453.9353145, 453.6523212, 452.6024881, 452.9658457,
455.3084733, 453.2023004, 453.704359, 453.2921532, 453.5388983,
452.0837367, 451.1964962, 451.7064709, 450.3598393, 449.3812282,
448.0563508, 448.6560677, 449.8208711, 447.3066134, 447.783045,
447.6497169, 448.0156386, 448.2689689, 449.1497844, 449.0279737,
448.5201206, 449.7131206, 449.6174205, 450.2479593, 450.6973705
), Low = c(449.2689228, 449.8494337, 451.4297673, 450.3847865,
450.8154675, 451.4656641, 454.5929712, 453.8866844, 453.9363161,
453.7459696, 454.1473172, 452.5797131, 454.4614194, 452.4159312,
452.4458168, 453.2353506, 452.3642802, 452.3774042, 452.6485611,
453.3248771, 453.6996322, 451.6874197, 449.8135407, 449.1804997,
450.4841919, 448.0796094, 447.8684126, 447.7141988, 448.2171119,
447.906635, 447.2796979, 448.0657512, 447.6734645, 448.3034072,
449.4600224, 448.0461631, 448.6454065, 448.349104, 450.0543481,
449.9894413, 449.8236391), close = c(449.2609004, 449.4053531,
451.1122691, 451.7274693, 451.0326458, 454.3438439, 455.2809649,
453.6682132, 453.9280758, 454.4603361, 454.204142, 452.6525043,
453.7623646, 452.3093107, 452.8724432, 452.8153176, 452.3614086,
453.0984373, 454.1264157, 452.7523412, 452.8282336, 451.0074535,
450.4822089, 451.5704093, 450.2223655, 448.563143, 448.1693728,
447.6999038, 448.0967266, 447.0993802, 448.1094835, 448.3651085,
447.5408461, 447.5243577, 449.1473132, 448.5976211, 448.6235759,
449.471077, 450.1042492, 450.3559352, 450.2732807)), .Names = c("times",
"Open", "High", "Low", "close"), class = "data.frame", row.names = c(NA,
-41L))
【问题讨论】:
-
它在 data.frame 中的位置更远吗?...您可能希望避免一些痛苦并避免
merge一起使用,并专注于在 dplyr 中使用连接函数:r4ds.had.co.nz/relational-data.html#mutating-joins跨度> -
@gjabel 是的,它有很多行。它只是数据框的头部。这意味着我们不能通过合并获得想要的结果?
-
你可能可以......只是连接函数更快更容易控制。我永远无法完全理解合并帮助文件。
-
看起来你需要
rbind,而不是merge,除非你每个都有相同的时间戳。您在head中看不到两者,因为没有重叠;另一个 data.frame 中的行进一步向下移动到新列中。 -
请
dput()您的数据,使其更容易重现。将指针悬停在r标签上以了解更多信息。