/ / Jak pomnożyć zmienną łańcuchową n-razy przez wartość innej zmiennej, w funkcji podsumowania group_by? - r, grupuj według, dplyr, podsumuj

Jak pomnożyć zmienną łańcuchową n-razy przez wartość innej zmiennej, wewnątrz funkcji podsumowania group_by? - r, group-by, dplyr, podsumuj

Mam problem z funkcją sumowania w group_by pakietu dplyr.

Tak wygląda ramka danych:

df <- read.table(text="id groups times strings
1   1      a     1     xxx
2   2      a     2     zzz
3   3      a     1     yyy
4   4      b     1     xxx
5   5      b     1     yyy
6   6      b     1     xxx
7   7      c     3     yyy
8   8      c     1     xxx
9   9      c     1     xxx
10 10      c     1     yyy", stringsAsFactors=FALSE)

Muszę pogrupować według zmiennej „groups”, aby uzyskać ramkę danych, która wygląda następująco:

view(group.df)
id2 groups2                            c.string
1   1       a             "xxx","zzz","zzz","yyy"
2   2       b                   "xxx","yyy","xxx"
3   3       c "yyy","yyy","yyy","xxx","xxx","yyy"


str(group.df)
"data.frame":   3 obs. of  3 variables:
$ id2     : int  1 2 3
$ groups2 : chr  "a" "b" "c"
$ c.string: chr  ""xxx","zzz","zzz","yyy"" ""xxx","yyy","xxx""
""yyy","yyy","yyy","xxx","xxx","yyy""

Mój problem polega na tym, że nie wiem, jak zakodować funkcję podsumowującą zagnieżdżoną w group_by, aby pomnożyć zmienną łańcuchową „df $ strings” przez wartość „df $ times”, tylko gdy „df $ times” wynosi> 1.

Dziękuję za pomoc.

Odpowiedzi:

0 dla odpowiedzi № 1

Wygląda na to, że po prostu ignorujesz kolumnę id, więc to powinno działać

df %>%
group_by(groups) %>%
summarize(c.string=paste(sQuote(rep(strings, times)), collapse=","))
#   groups                            c.string
#   <chr>                               <chr>
# 1      a             ‘xxx’,‘zzz’,‘zzz’,‘yyy’
# 2      b                   ‘xxx’,‘yyy’,‘xxx’
# 3      c ‘yyy’,‘yyy’,‘yyy’,‘xxx’,‘xxx’,‘yyy’