Hier mein Beispiel data.frame:durch Füllen Gruppen in einem 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
Spalte die Anzahl der ID
Beobachtungen innerhalb eines Day
zeigt; Count_group
zeigt die Anzahl der ID
Beobachtungen innerhalb einer Day
und ihre vorherigen 4 Tage.
Ich muss df
erweitern, um alle Tage innerhalb jeder Count_group
Episoden zu haben.
Erwartete Ausgabe:
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
Erklärung der Ausgabe:
1) Tag 1933 6-IDs auf diesem genauen Tag (Count col) und 15 IDs insgesamt von Tag 1933 bis Tag bekommen hat 1929 (Count_group col). Der Wert 15 kommt von 6 (Tag 1933) + 5 (1932) + 3 (1931) + 1 (1930) + 0 (1929). Also habe ich in der Ausgabe alle verbleibenden Tage innerhalb der Count_group = 15 Episode hinzugefügt.
2) Nächster Tag in absteigender Reihenfolge ist 1932. Mit 5 IDs an diesem genauen Tag und 9 IDs insgesamt von Tag 1932 bis Tag 1928. Der Wert 9 ergibt sich aus 5 (1932) + 3 (1931) + 1 (1930) + 0 (1929) + 0 (1928). Und in der Ausgabe (Zeile 28) sehen Sie die komplette Episode des Tages 1932 (5 Tage) mit insgesamt 9 Zeilen.
3) Next Day 1931..etc ist, etc ..
Der Ausgang data.frame rangiert von Count_group und Tag, beide fallend = TRUE.
Ich versuche einen Code zu erstellen, der nicht nur für ein 5-Tage-Fenster (wie oben) funktioniert, sondern für ein beliebiges Zeitfenster von n Tagen.
Haben Sie Vorschläge?
Dank
ok..could Sie haben einen Versuch? – aaaaa
Ich verstehe nicht ganz, wie Sie von den Daten zur erwarteten Ausgabe kommen, aber Sie könnten wahrscheinlich ['tidyr :: complete()'] (http://tidyr.tidyverse.org/reference/complete.html) verwenden. Vielleicht sehen Sie diese [Frage] (https://stackoverflow.com/questions/44271398/for-loops-inclusive-rows-in-a-dataframe-by-the-missing-values-of-factor-levels/44271839#44271839) oder [diese] (https://stackoverflow.com/questions/10438969/fastest-way-to-add-rows-for-missing-values-in-a-data-frame/44272077#44272077). – austensen
Ich bin ein wenig verwirrt. Wie erstellen wir neue Zeilen für Sie? Wie lauten die Regeln? Notieren Sie sich den Prozess, bei dem Sie nicht herausfinden können, wie Sie programmieren sollen. Wie berechnen wir neue Werte in jeder dieser Spalten, um Ihnen zu helfen? Bitte posten Sie die Antwort als Bearbeitung Ihrer Frage. –