R中不同的可能行组合

时间:2018-01-17 16:49:42

标签: r

目前我正在开发一个个人项目,我正在试图找出如何根据PURCHASE_DATE不同地组合行。

如果第20天和第25天重复两次,那么可能的结果数(#data帧)将为2 * 1 * 2 = 4.

这是我的数据框:

  ITEM    PRICE      PURCHASE_DATE
1  A       66           20
2  B       83           20
3  B       62           23
4  C       72           25
5  B       96           25

我希望我的结果是:

  ITEM    PRICE      PURCHASE_DATE
1  A       66           20
3  B       62           23
4  C       72           25

  ITEM    PRICE      PURCHASE_DATE
1  A       66           20
3  B       62           23
5  B       96           25

  ITEM    PRICE      PURCHASE_DATE
2  B       83           20
3  B       62           23
4  C       72           25

  ITEM    PRICE      PURCHASE_DATE
2  B       83           20
3  B       62           23
5  B       96           25

1 个答案:

答案 0 :(得分:2)

这是返回list的好方法。调用您的数据dd

ddsplit = split(1:nrow(dd), dd$PURCHASE_DATE)
rows = expand.grid(ddsplit)

result = apply(rows, 1, function(x) dd[x, ])
result
# [[1]]
#   ITEM PRICE PURCHASE_DATE
# 1    A    66            20
# 3    B    62            23
# 4    C    72            25
# 
# [[2]]
#   ITEM PRICE PURCHASE_DATE
# 2    B    83            20
# 3    B    62            23
# 4    C    72            25
# 
# [[3]]
#   ITEM PRICE PURCHASE_DATE
# 1    A    66            20
# 3    B    62            23
# 5    B    96            25
# 
# [[4]]
#   ITEM PRICE PURCHASE_DATE
# 2    B    83            20
# 3    B    62            23
# 5    B    96            25

使用此数据:

dd = read.table(text = "  ITEM    PRICE      PURCHASE_DATE
1  A       66           20
2  B       83           20
3  B       62           23
4  C       72           25
5  B       96           25", header = T)