按 id 对行内容进行分组

Group rows content by id

假设我有很多分析检查,如下所示:

Check_ID Category Items Cost
  000      Sugar     1     1
  001      Milk      1    10
  001      Butter    2    20
  001      Bread     1     5

并且我想在不手动设置行数的情况下使其看起来如下所示:

Check_ID Category.1 Items Cost Category.2 Items Cost Category.3 Items Cost
  000      Sugar      1     1
  001      Milk       1    10    Butter     2     20   Bread      1     5

我需要了解哪些产品通常一起服用。也许有替代解决方案,但我很困惑。

提前致谢。

您可以在创建唯一的 "time" 变量后使用 reshape。使用我的 "splitstackshape" 包中的 getanID 很容易做到这一点:

library(splitstackshape)
getanID(mydf, "Check_ID")
#    Check_ID Category Items Cost .id
# 1:        0    Sugar     1    1   1
# 2:        1     Milk     1   10   1
# 3:        1   Butter     2   20   2
# 4:        1    Bread     1    5   3
reshape(getanID(mydf, "Check_ID"), direction = "wide", idvar = "Check_ID", timevar = ".id")
#    Check_ID Category.1 Items.1 Cost.1 Category.2 Items.2 Cost.2 Category.3 Items.3 Cost.3
# 1:        0      Sugar       1      1         NA      NA     NA         NA      NA     NA
# 2:        1       Milk       1     10     Butter       2     20      Bread       1      5