在 R 中重塑数据框

Remodelling a dataframe in R

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

下面是可重现的初始数据帧:

  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,但我无法找出正确的使用方法,也不知道它们是否正确。

您并不是真的要重塑(那将是根据行的内容添加列),在这里您只想 summarize 每个 companytag 值.这样可以使用 dplyr:

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

使用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