gpt4 book ai didi

r - 如何合并日期变量在每个变量旁边的列中重复的数据框

转载 作者:行者123 更新时间:2023-12-04 09:11:00 25 4
gpt4 key购买 nike

我继承了一个带有以下格式数据的 csv 文件:

date        v1  date.1      v2  date.2      v3
2015-01-01 1 2015-01-01 4 2015-01-02 5
2015-01-02 2 2015-01-03 5 2015-01-03 2
2015-01-03 3 2015-01-04 3 2015-01-04 6
2015-01-04 4 2015-01-05 2 2015-01-05 2
2015-01-05 5 2015-01-06 6 2015-01-06 4
2015-01-06 6 2015-01-07 3 2015-01-07 5
2015-01-07 7 2015-01-08 1 2015-01-09 1

实际文件有超过 70 个日期变量对

注意:第 1、3 和 5 列中的日期不相同

我想在 R 中清理这些数据,以便我有一个包含日期的列,然后是与接下来三列中的这些日期相对应的 v1、v2 和 v3 的值:
date        v1  v2  v3
2015-01-01 1 4 NA
2015-01-02 2 NA 5
2015-01-03 3 5 2
2015-01-04 4 3 6
2015-01-05 5 2 2
2015-01-06 6 6 4
2015-01-07 7 3 5
2015-01-08 NA 1 NA
2015-01-09 NA NA 1

如果所有日期 (date, date.1, . . date.n) 列都相同,我可以简单地删除它们。然而,因为它们不是,所以删除它们会错误地将某些变量与错误的日期相关联,因为它们的位置(例如,var3 似乎在 2015-01-01 中具有 5 的值,即使该变量上没有 var3 的值日期)。

我考虑了堆栈(然后是消除非唯一值),但考虑到原始数据集的日期变量配对,这似乎不可行。

我考虑在 dplyr 包中使用 outer_join ,如果所有日期列都具有相同的名称(即,如果每个列都被称为“日期”而不是“日期”、“date.1”等),这可能会起作用。我可以重命名每个日期列,但考虑到它们的数量很大,这会很麻烦。

最后,我考虑了合并,但这似乎需要首先将大数据框(包括所有日期变量对)分解为多个数据框。此外,由于日期变量的名称不同,我必须将它们一一合并。

我怀疑可能有一种方法可以通过应用命令到达我要去的地方,但是我对应用命令的技能是有限的。

在此先感谢您的帮助和指导。

最佳答案

使用以下 for 循环怎么样?

res <- merge(df[,1:2], df[,3:4], by = c(1,1), all = TRUE)

for(i in seq_len((length(df)-4)/2)){
res <- merge(res, df[,(3 + i*2):(4 + i*2)], by = c(1,1), all = TRUE)
}
res
date v1 v2 v3
1 2015-01-01 1 4 NA
2 2015-01-02 2 NA 5
3 2015-01-03 3 5 2
4 2015-01-04 4 3 6
5 2015-01-05 5 2 2
6 2015-01-06 6 6 4
7 2015-01-07 7 3 5
8 2015-01-08 NA 1 NA
9 2015-01-09 NA NA 1

关于r - 如何合并日期变量在每个变量旁边的列中重复的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com