Ich war auf der Suche nach einer ähnlichen (aber etwas anders) Lösung. Hier zu posten, falls es für andere nützlich ist.
In meinem Fall brauchte ich eine allgemeinere Lösung, mit der jeder Buchstabe beliebig oft wiederholt werden kann. Hier ist, was ich kam mit:
library(tidyverse)
df <- data.frame(letters = letters[1:4])
df
> df
letters
1 a
2 b
3 c
4 d
Sagen wir, ich möchte 2 a, 3 B, 2 c und 4 D's:
df %>%
mutate(count = c(2, 3, 2, 4)) %>%
group_by(letters) %>%
expand(count = seq(1:count))
# A tibble: 11 x 2
# Groups: letters [4]
letters count
<fctr> <int>
1 a 1
2 a 2
3 b 1
4 b 2
5 b 3
6 c 1
7 c 2
8 d 1
9 d 2
10 d 3
11 d 4
Wenn Sie nicht möchten, dass die Zählspalte halten:
df %>%
mutate(count = c(2, 3, 2, 4)) %>%
group_by(letters) %>%
expand(count = seq(1:count)) %>%
select(letters)
# A tibble: 11 x 1
# Groups: letters [4]
letters
<fctr>
1 a
2 a
3 b
4 b
5 b
6 c
7 c
8 d
9 d
10 d
11 d
Wenn Sie wollen, dass die Zählung die Anzahl der Male zu reflektieren jeden Buchstaben wiederholt:
df %>%
mutate(count = c(2, 3, 2, 4)) %>%
group_by(letters) %>%
expand(count = seq(1:count)) %>%
mutate(count = max(count))
# A tibble: 11 x 2
# Groups: letters [4]
letters count
<fctr> <dbl>
1 a 2
2 a 2
3 b 3
4 b 3
5 b 3
6 c 2
7 c 2
8 d 4
9 d 4
10 d 4
11 d 4
Der einzige Weg, an den ich denken kann, besteht darin, in einen do-Block zu pipe- ren und aus dem aktuellen data.frame einen neuen zu erzeugen, wie Sie wollen (df%>% do (data.frame (column = rep (. $ Spalte, 4))) '). Dies ist jedoch gefährlich, wenn der data.frame andere Spalten hat. – r2evans
@ r2evans funktioniert super. Sie können es als Antwort senden. muss nur 'do (data.frame (a = rep (. $ a, each = 4)))' 'ändern. – Alexander