2010-01-18 1 views
3

У меня есть список дат транзакций и идентификатор пользователя лица, совершившего транзакцию на эту дату (разрешено только 1 Tx/day). Например:Использование Excel для отображения количества вхождений в диапазоне дат

Я хотел бы создать матрицу, которая показывает, по состоянию на каждую дату, количество пользователей, которые сделали 1 сделку, 2-10 сделок, 10-20 сделок и т.д. Например (примечание, приведенные ниже данные не соответствуют данным сделкам выше):

является ли сводной таблицы мой лучший механизм здесь? Если да (или нет), как бы я к этому подошел?

ответ

2

Мой голос использовать стержень Если у вас есть 2007 что-то вроде этого

1) Выберите данные, которые вы выше 2) Do Вставка Pivot 3) Перетащите Дата в Роу Loabel 4) Перетащите идентификатор пользователя столбцы => вы получите один столбец за ID пользователь 5) в поле Значения yoiu должны иметь количества пользователей 6) Затем вам нужно добавить новые столбцы, которые подсчитывают количество пользователей, которые находятся в сегменте 1-10 и т.д.

+0

Спасибо за быстрый ответ. Не могли бы вы объяснить, почему я перетаскиваю идентификатор пользователя в столбцы? Я бы закончил с тысячами столбцов. Другой пробел, который у меня есть, заключается в том, как создать формулы столбцов сегмента, чтобы подсчитать количество вхождений в этом диапазоне. – Howiecamp

+0

Возможно, это плохой подход, если у вас тысячи пользователей .... Я думал об использовании частотной функции, например http://www.meadinkent.co.uk/xlfreq.htm – salgo60

1

I знаю, что я собираюсь сказать, немного «вне сферы действия», но у меня была такая проблема, и я использовал R, чтобы обойти его. (Если бы я не использовал R, я бы подумал, что я бы попробовал sql, но ни в коем случае не выбрал бы excel)

У меня также есть таблица с двумя столбцами с именем «trans_data», как у вас. Имена столбцов: «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 

 Смежные вопросы

  • Нет связанных вопросов^_^