我在R中有以下数据帧(一些样本值)
Account Year_Month
200 201412
300 201412
200 201411
400 201411
200 201410
400 201410
200 201411
300 201412
我需要了解给定year_months中“帐户”的频率是多少?
例如:
201412(2014年12月)
Account Frequency count
300 2
200 1
201412和201411(2014年12月和2014年11月)
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
答案 1 :(得分:0)
听起来你知道一个函数可以为月份提取多个值并提取案例,然后使用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
如果你不喜欢&#34; Var1&#34;你可以在表函数中添加一个名字。选择:
> 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