【问题标题】:Remodelling a dataframe in R在 R 中重构数据框
【发布时间】:2021-03-01 23:45:51
【问题描述】:

我正在尝试将我的数据重塑为以下形状(从左侧形状到右侧形状):

以下是可重现的初始数据框:

  df <- data.frame(tag=c("tech","tech","tech","tech","distribution","fooddrinks","industry","conseil","tech","tech","conseil","fooddrinks","tech","conseil","conseil","conseil","conseil"),
                     company_name=c("360Learning","365Talents","3DS OUTSCALE","4D SAS","77 Foods","77 Foods","77 Foods","8pourcent","8SEC","Compte Pour Moi","Compte Pour Moi","AB InBev Europe","AB Tasty","AB Tasty","ABBD","Abbeal","ABC arbitrage"),
    company_link=c("/fr/companies/360learning",  "/fr/companies/365talents",  "/fr/companies/3dsoutscale",  "/fr/companies/4d",  "/fr/companies/77-foods",  "/fr/companies/77-foods",  "/fr/companies/77-foods",  "/fr/companies/8pourcent",  "/fr/companies/8sec",  "/fr/companies/ca-compte-pour-moi",  "/fr/companies/ca-compte-pour-moi",  "/fr/companies/abinbev",
      "/fr/companies/ab-tasty",  "/fr/companies/ab-tasty",  "/fr/companies/abbd",  "/fr/companies/abbeal",  "/fr/companies/abc-arbitrage"))
      

我尝试了以下函数:stats::reshapedata.table::dcasttidyr::spread,但我不知道使用它们的正确方法,也不知道它们是否正确。

【问题讨论】:

    标签: r dplyr statistics data.table data-modeling


    【解决方案1】:

    您并没有真正尝试重塑(即根据行的内容添加列),在这里您只想为每个company 设置summarizetag 值。这样就可以使用dplyr 轻松完成:

    library(dplyr)
    df %>%
      group_by(company_name, company_link) %>%
      summarize(tag = paste(tag, collapse = ", "))
    

    【讨论】:

      【解决方案2】:

      使用data.table时,您也可以通过以下方式解决您的问题:

      library(data.table)
      
      setDT(df)[, .(tag = toString(tag), company_link = company_link[1]), by = company_name]
      
      #        company_name                                tag                     company_link
      #  1:     360Learning                               tech        /fr/companies/360learning
      #  2:      365Talents                               tech         /fr/companies/365talents
      #  3:    3DS OUTSCALE                               tech        /fr/companies/3dsoutscale
      #  4:          4D SAS                               tech                 /fr/companies/4d
      #  5:        77 Foods distribution, fooddrinks, industry           /fr/companies/77-foods
      #  6:       8pourcent                            conseil          /fr/companies/8pourcent
      #  7:            8SEC                               tech               /fr/companies/8sec
      #  8: Compte Pour Moi                      tech, conseil /fr/companies/ca-compte-pour-moi
      #  9: AB InBev Europe                         fooddrinks            /fr/companies/abinbev
      # 10:        AB Tasty                      tech, conseil           /fr/companies/ab-tasty
      # 11:            ABBD                            conseil               /fr/companies/abbd
      # 12:          Abbeal                            conseil             /fr/companies/abbeal
      # 13:   ABC arbitrage                            conseil      /fr/companies/abc-arbitrage
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-02
        • 1970-01-01
        • 2011-03-29
        • 2015-02-27
        • 2017-02-11
        相关资源
        最近更新 更多