Ich habe Probleme beim Kombinieren slice
und map
.R - dplyr Map Slice für Wiederholungszeilen
Ich bin daran interessiert, etwas zu tun, ähnlich wie this; Das ist in meinem Fall, eine kompakte Person-Periode-Datei in eine lange (sequenzielle) Personen-Periode zu verwandeln. Da meine Datei jedoch zu groß ist, muss ich die Daten zuerst teilen.
Aussehen Meine Daten wie diese
group id var ep dur
1 A 1 a 1 20
2 A 1 b 2 10
3 A 1 a 3 5
4 A 2 b 1 5
5 A 2 b 2 10
6 A 2 b 3 15
7 B 1 a 1 20
8 B 1 a 2 10
9 B 1 a 3 10
10 B 2 c 1 20
11 B 2 c 2 5
12 B 2 c 3 10
Was ich brauche ist einfach diese (Antwort von this)
library(dplyr)
dt %>% slice(rep(1:n(),.$dur))
aber ich bin daran interessiert, eine split(.$group)
einzuführen.
Wie soll ich das tun?
dt %>% split(.$group) %>% map_df(slice(rep(1:n(),.$dur)))
Funktioniert nicht zum Beispiel.
Meine gewünschte Ausgabe ist die gleiche wie dt %>% slice(rep(1:n(),.$dur))
die
group id var ep dur
1 A 1 a 1 20
2 A 1 a 1 20
3 A 1 a 1 20
4 A 1 a 1 20
5 A 1 a 1 20
6 A 1 a 1 20
7 A 1 a 1 20
8 A 1 a 1 20
9 A 1 a 1 20
10 A 1 a 1 20
.....
ist Aber ich muss split
diese Operation, da die Datei zu groß ist.
Daten
dt = structure(list(group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L), .Label = c("A", "B"), class = "factor"),
id = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L,
2L, 2L), .Label = c("1", "2"), class = "factor"), var = structure(c(1L,
2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 3L, 3L, 3L), .Label = c("a",
"b", "c"), class = "factor"), ep = structure(c(1L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("1", "2",
"3"), class = "factor"), dur = c(20, 10, 5, 5, 10, 15, 20,
10, 10, 20, 5, 10)), .Names = c("group", "id", "var", "ep",
"dur"), row.names = c(NA, -12L), class = "data.frame")
Nicht sicher, warum es downvoted wurde, das sieht wie eine interessante Frage aus (plus eins) – akrun
Ich bin nicht klar, was das OP als Ausgabe erwartet (obwohl ich überhaupt nicht darüber abgestimmt habe) – hrbrmstr
@hrbrmstr denke ich Es ist das gleiche wie im verlinkten Post – akrun