J'ai un problème avec la fonction de synthèse à l'intérieur de group_by, du paquet dplyr.
Voici à quoi ressemble le cadre de données:
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)
J'ai besoin de group_by avec la variable "groups" pour obtenir un dataframe qui ressemble à ceci:
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""
Mon problème est que je ne sais pas comment coder la fonction de synthèse imbriquée dans group_by pour multiplier la variable de chaîne "df $ strings" par la valeur de "df $ times", uniquement lorsque "df $ times" vaut> 1.
Merci de votre aide.
Réponses:
0 pour la réponse № 1On dirait que vous ignorez simplement la colonne id, cela devrait donc fonctionner
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’