Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中可能的不同行组合_R - Fatal编程技术网

R中可能的不同行组合

R中可能的不同行组合,r,R,目前,我正在从事一个个人项目,我正试图找出如何根据购买日期不同地组合行 其中第20天和第25天重复两次,因此可能的结果(#数据帧)数量为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

目前,我正在从事一个个人项目,我正试图找出如何根据
购买日期
不同地组合行

其中第20天和第25天重复两次,因此可能的结果(#数据帧)数量为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

下面是一个返回
列表的好方法。调用您的数据
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)

这似乎是一个潜在的不具代表性的例子。是否总是这样,只重复一个购买日期?如果重复多个购买日期怎么办?如果某些数据重复了不同的次数会怎样?输出的数据应该超过4帧,是吗?您已经显示了ABC的不同价格,但还有无数其他组合,是吗?事实上,应该有
5*4*3
data.frames输出。谢谢@Gregor的回复。我刚刚修改了当前的案例。请回顾一下,并给我一些反馈。我需要的是允许我打印此输出的代码。@InfiniteFlashChess组合由唯一的购买日期决定。共有2个购买日期
20
、1个购买日期
23
、2个购买日期
25
,因此2*1*2=4个可能的输出。感谢您的回复。我们根据独特的日期得到不同的组合。在本例中,我们有3个不同的日期:20、23和25,其中20和25各重复两次。因此,可能的数据帧数应该是:2*1*2=4。就像@Gregor提到的那样。