【发布时间】:2017-07-03 12:58:15
【问题描述】:
我正在处理一个复杂的矩阵(对我来说很复杂......)
是这样的:
Invoice.1 Invoice.2 Invoice.3 mtime
1 21605000182 21605000183 NA 2017-01-16 19:51:33
2 21605000182 21605000183 NA 2017-01-16 19:51:33
3 21605000182 21605000183 NA 2017-01-16 19:51:33
4 21605000182 21605000183 NA 2017-01-16 19:51:33
5 21510000669 21602000125 21608000366 2017-01-20 13:28:36
6 21609000856 NA NA 2017-01-20 13:28:36
7 21606000405 21608000354 21608000356 2017-01-20 13:28:36
8 21610000133 NA NA 2017-01-20 13:28:36
9 21604000592 21605000604 21605000608 2017-01-20 13:28:36
10 21609001012 NA NA 2017-01-20 13:28:36
我想将所有 Invoice 列转换为一个,以清理“NA”和重复项,但要尊重每个列与最后一列日期的匹配,即索赔日期。
类似的东西:
Invoice mtime
1 21605000182 2017-01-16 19:51:33
2 21605000182 2017-01-16 19:51:33
3 21605000182 2017-01-16 19:51:33
4 21605000182 2017-01-16 19:51:33
5 21510000669 2017-01-20 13:28:36
6 21609000856 2017-01-20 13:28:36
7 21606000405 2017-01-20 13:28:36
8 21610000133 2017-01-20 13:28:36
9 21604000592 2017-01-20 13:28:36
10 21609001012 2017-01-20 13:28:36
11 21605000183 2017-01-16 19:51:33
12 21605000183 2017-01-16 19:51:33
13 21605000183 2017-01-16 19:51:33
14 21605000183 2017-01-16 19:51:33
15 21602000125 2017-01-20 13:28:36
16 21608000354 2017-01-20 13:28:36
【问题讨论】:
-
unique(df)将删除初始 data.frame 中的重复行。那你要重塑长:stackoverflow.com/questions/2185252/… -
因为 Imo 已经建议使用类似:
library(reshape2); melt(data)或library(tidyverse); data %>% gather(key, value, -mtime) -
我认为你可以在 tidyr 库中使用一些东西,比如 data % gather(tmp, Invoice, c(Invoice.1,Invoice.2,Invoice.3))
-
@lmo 在应用唯一之前有必要重塑矩阵。 I. 尝试应用数据 %>% 收集...现在无法解决
-
在您的示例中,第 1 行是第 2 行的副本。在这种情况下,最初使用
unique将减少重塑算法的负担,并可能显着加快该过程。重塑后,您必须再次使用unique。我提供的链接中有很多解决方案。
标签: r match multiple-columns data-cleaning