大文件求和iin R或Python

时间:2018-03-15 14:49:56

标签: python r

我有一个包含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  

1 个答案:

答案 0 :(得分:0)

  • 使用以下公式构建新列:gravity。从您的数据的第一行开始,它将提供=B5&C5&D5&E5

  • 选择包含公式的单元格并前往数据末尾。你会得到新的数据,例如001M代表第2行,110M代表第3行等等。

  • 然后您可以使用101M或数据透视表来计算唯一值。

Support.Office Frequency

注意 - Excel的行最多为=Frequency()。但是,如果您使用的是Pivot,则可以将范围保存为csv文件,并将其用作“使用外部数据”中的数据透视源。