我有一个包含200万条记录的大型数据框。该文件包含单个客户记录和变量。
CUST_ID = unique ID
FLAG_1 = 1, 0
FLAG_2 = 1, 0
FLAG_2 = 1, 0
SEGMENT = H, M
VISITS = numeric value
以下是头尾示例:
CUST_ID FLAG_1 FLAG_2 FLAG_3 SEGMENT VISITS
1 0 0 0 M 18
2 1 1 0 M 23
3 1 0 1 H 19
1999998 1 1 0 M 36
我可以在R中执行摘要统计,但是我的同事想要一个适合excel的输出,这样他就可以构建一个数据透视图并在数据上运行各种场景。例如,他希望通过特定的FLAG组合查看计数,并根据访问时的FLAG和SEGMENT组合运行总和。
我的问题是,我无法找到将文件展平为FLAG和SEGMENT的独特组合的解决方案。我在R中寻找一个例子,但是他会对Python中的解决方案感兴趣。
期望的输出:
Row FLAG_1 FLAG_2 FLAG_3 SEGMENT VISITS CUST_ID
1 0 0 0 H sum count
2 0 0 1 H sum count
3 0 1 1 H sum count
4 0 1 1 H sum count
5 1 0 0 H sum count
6 1 0 1 H sum count
7 1 1 0 H sum count
8 1 1 1 H sum count
9 0 0 0 M sum count
10 0 0 1 M sum count
11 0 1 1 M sum count
12 0 1 1 M sum count
13 1 0 0 M sum count
14 1 0 1 M sum count
15 1 1 0 M sum count
16 1 1 1 M sum count
从本质上讲,它将是每种可能的组合(2 x 2 x 2 x 2)以及该组合的相应VISITS和CUST_ID数量之和。
这是我提出的解决方案。如果有人有更好的,请告诉我。
df_agg1 <- aggregate(CUST_ID ~ FLAG_1 + FLAG_2 + FLAG_3 + SEGMENT, data = DF, length)
df_agg2 <- aggregate(VISITS ~ FLAG_1 + FLAG_2 + FLAG_3 + SEGMENT, data = DF, sum)
#bind CUST_ID to COUNT in VISIT data frame
df_agg2$COUNT <- df_agg1$CUST_ID
答案 0 :(得分:0)
使用以下公式构建新列:gravity
。从您的数据的第一行开始,它将提供=B5&C5&D5&E5
。
选择包含公式的单元格并前往数据末尾。你会得到新的数据,例如001M
代表第2行,110M
代表第3行等等。
然后您可以使用101M
或数据透视表来计算唯一值。
注意 - Excel的行最多为=Frequency()
。但是,如果您使用的是Pivot,则可以将范围保存为csv文件,并将其用作“使用外部数据”中的数据透视源。