【发布时间】:2017-06-03 01:53:58
【问题描述】:
这是我的示例 data.frame:
df = read.table(text = 'ID Day Count Count_group
18 1933 6 15
33 1933 6 15
37 1933 6 15
18 1933 6 15
16 1933 6 15
11 1933 6 15
111 1932 5 9
34 1932 5 9
60 1932 5 9
88 1932 5 9
18 1932 5 9
33 1931 3 4
13 1931 3 4
56 1931 3 4
23 1930 1 1
6 1800 6 12
37 1800 6 12
98 1800 6 12
52 1800 6 12
18 1800 6 12
76 1800 6 12
55 1799 4 6
6 1799 4 6
52 1799 4 6
133 1799 4 6
112 1798 2 2
677 1798 2 2
778 888 4 8
111 888 4 8
88 888 4 8
10 888 4 8
37 887 2 4
26 887 2 4
8 886 1 2
56 885 1 1
22 120 2 6
34 120 2 6
88 119 1 6
99 118 2 5
12 118 2 5
90 117 1 3
22 115 2 2
99 115 2 2', header = TRUE)
Count 列显示Day 中ID 观察的数量;
Count_group 显示 ID 在 Day 及其前 4 天内的观察次数。
我需要扩展 df 以便拥有每个 Count_group 剧集中的所有天数。
预期输出:
ID Day Count Count_group
18 1933 6 15
33 1933 6 15
37 1933 6 15
18 1933 6 15
16 1933 6 15
11 1933 6 15
111 1932 5 15
34 1932 5 15
60 1932 5 15
88 1932 5 15
18 1932 5 15
33 1931 3 15
13 1931 3 15
56 1931 3 15
23 1930 1 15
6 1800 6 12
37 1800 6 12
98 1800 6 12
52 1800 6 12
18 1800 6 12
76 1800 6 12
55 1799 4 12
6 1799 4 12
52 1799 4 12
133 1799 4 12
112 1798 2 12
677 1798 2 12
111 1932 5 9
34 1932 5 9
60 1932 5 9
88 1932 5 9
18 1932 5 9
33 1931 3 9
13 1931 3 9
56 1931 3 9
23 1930 1 9
778 888 4 8
111 888 4 8
88 888 4 8
10 888 4 8
37 887 2 8
26 887 2 8
8 886 1 8
56 885 1 8
55 1799 4 6
6 1799 4 6
52 1799 4 6
133 1799 4 6
112 1798 2 6
677 1798 2 6
22 120 2 6
34 120 2 6
88 119 1 6
88 119 1 6
99 118 2 6
12 118 2 6
99 118 2 6
12 118 2 6
90 117 1 6
90 117 1 6
22 115 2 6
99 115 2 6
99 118 2 5
12 118 2 5
90 117 1 5
22 115 2 5
99 115 2 5
33 1931 3 4
13 1931 3 4
56 1931 3 4
23 1930 1 4
37 887 2 4
26 887 2 4
8 886 1 4
56 885 1 4
90 117 1 3
22 115 2 3
99 115 2 3
112 1798 2 2
677 1798 2 2
8 886 1 2
56 885 1 2
22 115 2 2
99 115 2 2
23 1930 1 1
56 885 1 1
输出说明:
1) Day 1933 在这一天(Count col)有 6 个 ID,从 Day 1933 到 Day 1929(Count_group col)总共有 15 个 ID。值 15 来自 6 (Day 1933) + 5 (1932) + 3 (1931) + 1 (1930) + 0 (1929)。因此,在输出中,我添加了 Count_group = 15 集内的所有剩余天数。
2) Next Day 按降序排列是 1932。在这一天有 5 个 ID,从 1932 年到 1928 年总共有 9 个 ID。值 9 来自 5 (1932) + 3 (1931) + 1 (1930) ) + 0 (1929) + 0 (1928)。在输出(第 28 行)中,您将看到 1932 年完整(5 天)一集,总共 9 行。
3) 第二天是 1931..等等..
输出 data.frame 按 Count_group 和 Day 排序,均递减 = TRUE。
我正在尝试创建一个不仅适用于 5 天窗口(如上)而且适用于任何 n 天时间窗口的代码。
你有什么建议吗?
谢谢
【问题讨论】:
-
ok..你能试试吗?
-
我不完全理解您是如何从数据获得预期输出的,但您可能可以使用
tidyr::complete()。也许看到这个question,或this one。 -
我有点困惑。我们如何为您创建新行。有哪些简单明了的规则?写下您无法弄清楚如何编码的过程。我们如何计算这些列中的新值以帮助您?请将回复发布为对您问题的修改。
-
已添加信息。实际上没有要创建的新数据。我只需要每个 Count_group 剧集的重复值,这些值需要根据 Count_group 剧集进行分组。谢谢
标签: r dataframe duplicates rows fill