2010-01-18 99 views
3

我已经列出了交易日期以及在该日期进行交易的人的用户标识(仅允许1天/天)。例如:使用Excel显示日期范围内发生的次数

我想创建一个矩阵表示,因为每个日期的,谁取得了1个交易,2-10交易,10-20交易等的用户数例如(注意,下面的数据不对应于上述的交易数据):

是一个透视表在这里我最好的机制是什么?如果是(或不),我会如何处理?

回答

2

我的投票使用枢轴 如果你有2007这样的事情

1)选择您有以上 2)不要插入枢轴 3)将日期排Loabel 4)将用户ID数据列=>你会得到每个用户ID 5)一列值yoiu应该有用户 6的计数),然后你需要添加计算,在段1-10等

+0

感谢您的快速答复。你能否澄清为什么我要将用户ID拖到列中?我最终会有成千上万的专栏。我遇到的另一个问题是如何创建段列公式来计算该范围内出现的次数。 – Howiecamp 2010-01-18 00:21:57

+0

也许这是一个坏方法,如果你有成千上万的用户...... 我想过使用频率函数,如http://www.meadinkent.co.uk/xlfreq.htm – salgo60 2010-01-18 03:19:34

1

我的用户数新列知道我要说的是有点“超出范围”,但我有这样的问题,我用R来解决它。 (如果我没有使用R,我想我会尝试SQL但绝不会选择Excel)

我也有一个名为“trans_data”的2列表,就像你的。列名称是“trans_date”和“user_id”。我还希望在特定交易限制范围内的像用户数量那样的应急表。

下面是代码

library(plyr) 
adply(table(trans_date),1,function(x) { 
    d = NULL 
    d["1"] <- sum(x==1) 
    d["2_to_5"] <- sum(x > 1 & x <= 5) 
    d["6_to_27"] <- sum(x > 5 & x <= 27) 
    d["28_to_120"] <- sum(x > 27 & x <= 120) 
    d["121_to_398"] <- sum(x > 120 & x <= 398) 
    d[">_398"] <- sum(x > 398) 
    return(d) 
    } 
) 

和部分结果

trans_date 1 2_to_5 6_to_27 28_to_120 121_to_398 >_398 
1 2009-01-25 257 169  61   7   1  0 
2 2009-01-26 145 125  53   3   1  0 
3 2009-01-27 175 117  44  12   0  0 
4 2009-01-28 171 138  49   7   4  0 
5 2009-01-29 756 217  71   5   3  0