首页 文章

如何在汇总的group_by函数中将字符串变量n倍乘以另一个变量的值?

提问于
浏览
0

我在包dplyr的group_by中的汇总函数有问题 .

这就是数据框的样子:

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)

我需要group_by变量“groups”来获得一个如下所示的数据帧:

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'"

我的问题是,我不知道如何编码嵌套在group_by中的汇总函数,将字符串变量“df $ strings”乘以“df $ times”的值,只有当“df $ times”> 1时 .

谢谢您的帮助 .

1 回答

  • 0

    好像你只是忽略id列,所以这应该工作

    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’
    

相关问题