按ID对行内容进行分组

时间:2015-01-14 14:57:33

标签: r reshape

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

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

我需要了解哪些产品通常合在一起。也许有另一种解决方案,但我很困惑。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以在创建独特的"时间"之后使用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