按 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
假设我有很多分析检查,如下所示:
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