【发布时间】:2019-11-27 03:12:01
【问题描述】:
我是这个平台和 R 的新手。
我有 2 个数据集,其中 (datasetA)70000 行和 (datasetB)10000 行。一个和 B 是相同的数据集,有 18 个变量。 我需要从 datasetA 中找到丢失的数据,并使用相同的时间戳从 datasetB 中替换(如果存在)它。
我尝试过合并、加入、匹配。
我想保留第一个数据集并替换第二个数据集中丢失的数据。
有没有没有循环的解决方案?
DatasetA
Date Time qK1 qL1 vP1 vL1 qK2
34900 20.06.2019 05:40:00 -- -- -- -- --
34901 20.06.2019 05:41:00 10 4 140 86 9
34902 20.06.2019 05:42:00 -- -- -- -- --
34903 20.06.2019 05:43:00 8 0 130 0 6
34904 20.06.2019 05:44:00 -- -- -- -- --
34905 20.06.2019 05:45:00 -- -- -- -- --
34906 20.06.2019 05:46:00 6 2 132 87 9
34907 20.06.2019 05:47:00 -- -- -- -- --
34908 20.06.2019 05:48:00 -- -- -- -- --
34909 20.06.2019 05:49:00 8 1 127 84 3
34910 20.06.2019 05:50:00 -- -- -- -- --
34911 20.06.2019 05:51:00 -- -- -- -- --
34912 20.06.2019 05:52:00 10 4 116 104 9
34913 20.06.2019 05:53:00 -- -- -- -- --
34914 20.06.2019 05:54:00 6 0 125 0 11
34915 20.06.2019 05:55:00 -- -- -- -- --
34916 20.06.2019 05:56:00 -- -- -- -- --
34917 20.06.2019 05:57:00 5 4 130 93 7
34918 20.06.2019 05:58:00 -- -- -- -- --
34919 20.06.2019 05:59:00 -- -- -- -- --
34920 20.06.2019 06:00:00 -- -- -- -- --
DATASETB
Date Time qK1 qL1 vP1 vL1 qK2
340 20.06.2019 05:39 5 1 123 88 7
341 20.06.2019 05:40 9 1 115 110 9
342 20.06.2019 05:41 10 4 140 86 9
343 20.06.2019 05:42 7 1 102 87 7
344 20.06.2019 05:43 8 0 130 0 6
345 20.06.2019 05:44 6 0 121 0 6
346 20.06.2019 05:45 7 0 122 0 9
347 20.06.2019 05:46 6 2 132 87 9
348 20.06.2019 05:47 4 1 128 101 6
349 20.06.2019 05:48 6 2 124 92 9
350 20.06.2019 05:49 8 1 127 84 3
351 20.06.2019 05:50 7 1 115 87 7
352 20.06.2019 05:51 7 0 130 0 4
353 20.06.2019 05:52 10 4 116 104 9
354 20.06.2019 05:53 9 1 126 85 8
355 20.06.2019 05:54 6 0 125 0 11
356 20.06.2019 05:55 5 1 125 86 8
357 20.06.2019 05:56 6 5 87 93 9
358 20.06.2019 05:57 5 4 130 93 7
359 20.06.2019 05:58 7 2 124 86 9
360 20.06.2019 05:59 5 1 120 89 7
I tried this basically, but it doesnt work due to length difference.
DatasetA$timestamp <- as.POSIXct(paste(DatasetA$Date, DatasetA$Time), format = "%d.%m.%Y %H:%M:%S")
DatasetB$timestamp <- as.POSIXct(paste(DatasetB$Date, DatasetB$Time), format = "%d.%m.%Y %H:%M")
DatasetA[DatasetA$timestamp==DatasetB$timestamp,"qK1"]<-DatasetB$qK1
Error in `[<-.data.frame`(`*tmp*`, DatasetA$timestamp == DatasetB$timestamp, "qK1", :
replacement has 10080 rows, data has 60482
In addition: Warning message:
In `==.default`(DatasetA$timestamp, DatasetB$timestamp) :
longer object length is not a multiple of shorter object length
【问题讨论】:
-
请给出一个示例数据集(例如
dput(head(datasetA)))。您是缺少 A 中的行,还是仅缺少单个值? -
我已经提交了有问题的示例数据集。根本没有缺少原料。但是每个变量都有缺失值。要找出 i、j 逻辑和替换需要更长的循环。有没有可能在短时间内做到?
-
没有可以加载的示例数据集。请使用
dput()的输出,以便我可以将数据集粘贴到我的 R 会话中并尝试使用它。 -
感谢您的宝贵时间。我尝试输出 dput 但它需要很长的文本。相反,我放了一个广泛的示例,可以为您提供参考。
-
正如我在问题中所描述的,数据集是大数据。时间戳有偏离路线的匹配。否则对此毫无意义。这只是 2 个数据集的示例,不仅可以帮助您理解这个概念,还可以在下面回答。
标签: r time-series missing-data