2015-02-14 6 views
-2

Я следующий dataframe в R (некоторые выборочные значения)значения Пересечение на основе значений столбца группы

Account  Year_Month 
200   201412 
300   201412 
200   201411 
400   201411 
200   201410 
400   201410 
200   201411 
300   201412 

Мне нужно выяснить, что частота на «счет» в данных year_months?

Например:

Для 201412 (декабрь 2014)

Account  Frequency count 
300   2 
200   1 

Для 201412 и 201411 (декабрь 2014 и ноябрь 2014)

Account Frequency count 
300  2 
200  3 
400  1 

Я попытался сделать фактор на Year_Month но это не сработало. Что мне может не хватать? Любая помощь?

+0

Трудно сказать, что понятия вам не хватает, так как вы не предложили никакого кода. –

ответ

0
#A simple solution is to use `table`. 

with(data,table(Account,Year_Month))# data is your data frame

 201410 201411 201412 
    200  1  2  1 
    300  0  0  2 
    400  1  1  0 
OR 
#data.table package 
#install.packages("data.table) # if not installed 
library(data.table) 
dt<-data.table(data) 
dt[,list(freq=.N),c("Account","Year_Month")] 
    Account Year_Month freq 
1:  200  201412 1 
2:  300  201412 2 
3:  200  201411 2 
4:  400  201411 1 
5:  200  201410 1 
6:  400  201410 1 
+0

Мои требования разные, мне нужны только две колонки. в результате второй столбец с частотным счетчиком должен объединять данные месяцы года, как я объяснил в примере –

+0

. Для этого существует множество вариантов. Я использовал пакет 'data.table'. – Metrics

0

Звуки, как вы wnat функция, которая может принимать несколько значений месяца и извлекать случаи, а затем использовать table возвращать таблицу R на случай непредвиденных обстоятельств. Отображение в столбчатом формате предоставляется функцией as.data.frame.table.

extract_yr.mon <- function(yr,mon,dat=dat){ 
         table(dat[dat$Year_Month %in% paste0(yr, mon),"Account"])} 

extract_yr.mon(2014, 11:12, dat) 
# 200 300 400 
#  3 2 1 

as.data.frame(extract_yr.mon(2014, 11:12, dat)) 
#------------- 
    Var1 Freq 
1 200 3 
2 300 2 
3 400 1 

Вы можете добавить имя в табличной функции, если не нравится «var1» выбор:

> extract_yr.mon <- function(yr,mon,dat=dat){ table(Account=dat[dat$Year_Month %in% paste0(yr, mon),"Account"])} 
> as.data.frame(extract_yr.mon(2014, 11:12, dat)) 
    Account Freq 
1  200 3 
2  300 2 
3  400 1