【发布时间】:2019-05-04 09:15:51
【问题描述】:
我正在处理类似的数据
structure(list(id = c("aaa", "aaa", "aaa", "aaa", "aaa", "aaa",
"aaa", "bbb", "bbb", "bbb", "bbb", "bbb", "bbb", "bbb", "ccc",
"ccc", "ccc", "ccc", "ccc", "ccc"), score = c(100.5, 110.46,
113.35, 128.214, 130.123, 134.56, 139.56, 20.5, 21.465, 30.436,
49.24, 60.325, 66.4, 70.25, 99.43, 70.35, 64.4, 60.325, 55.35,
42.35), date = c("2018-02-25", "2018-02-25", "2018-02-25", "2018-02-25",
"2018-02-25", "2018-02-25", "2018-02-25", "2018-03-18", "2018-03-18",
"2018-03-18", "2018-03-18", "2018-03-18", "2018-03-18", "2018-03-18",
"2018-04-22", "2018-04-22", "2018-04-22", "2018-04-22", "2018-04-22",
"2018-04-22")), class = "data.frame", row.names = c(NA, -20L))
我想通过按 id 分组的每周日期序列来替换重复的日期值,以获得更大的数据集。 我的示例输出:
id score date
aaa 100.5 2018-02-25
aaa 110.46 2018-03-04
aaa 113.35 2018-03-11
aaa 128.214 2018-03-18
aaa 130.123 2018-03-25
aaa 134.56 2018-04-01
aaa 139.56 2018-04-08
bbb 20.5 2018-03-18
bbb 21.465 2018-03-25
bbb 30.436 2018-04-01
bbb 49.24 2018-04-08
bbb 60.325 2018-04-15
bbb 66.4 2018-04-22
bbb 70.25 2018-04-29
ccc 99.43 2018-04-22
ccc 70.35 2018-04-29
ccc 64.4 2018-05-06
ccc 60.325 2018-05-13
ccc 55.35 2018-05-20
ccc 42.35 2018-05-27
基本上它应该采用按 id 分组的第一个日期(动态读取)并以每周顺序的方式用日期填充以下行。感谢任何帮助。
【问题讨论】:
-
我不确定我是否遵循(或“同意”)您的逻辑。数据显然对每个 id 都有一个唯一的日期,您想从那里更改
date的值吗?如果数据以这种方式提供给您,那么您可能需要调整数据的创建方式。如果没有,那么也许我们应该关注您如何导入数据。话虽如此......我认为by或dplyr::group_by(和dplyr::n)将是扭曲这些数据的一种方法。 -
您能否使用 dplyr@r2evans 分享解决方案
标签: r dplyr tidyr zoo lubridate