【发布时间】:2014-01-29 12:35:47
【问题描述】:
我想计算以下数据框中每个人每月(hai_dispense_number)的行数。我的总体目标是查看从 4 月到 9 月的平均行数是否增加。我很确定我应该使用 ave 函数来创建一个计数变量。但是我所有的尝试都不适合我。请参阅下面的尝试。一旦我做了计数,我想我可以使用 ddply 每月做一个平均总结。下面是一个玩具df,列'obs'是我想要的输出。
df
hai_dispense_number date_of_claim hai_atc month obs
9972511 Patient HAI0002664 2010-04-07 A10BA02 april 1
11376245 Patient HAI0002664 2010-05-04 A10BA02 may 1
12508505 Patient HAI0002664 2010-05-31 A10BA02 may 2
13480611 Patient HAI0002664 2010-06-30 A10BA02 june 1
13486327 Patient HAI0002664 2010-06-30 A10BH03 june 2
13567944 Patient HAI0002664 2010-06-08 A10BA02 june 3
15003657 Patient HAI0002664 2010-07-27 A10BA02 july 1
15003658 Patient HAI0002664 2010-07-27 A10BH03 july 2
16600413 Patient HAI0002664 2010-08-31 A10BB09 august 1
16600866 Patient HAI0002664 2010-08-23 A10BA02 august 2
16600867 Patient HAI0002664 2010-08-23 A10BH03 august 3
17537505 Patient HAI0002664 2010-08-27 A10BB09 august 4
19176349 Patient HAI0002664 2010-09-17 A10BB09 september 1
19176350 Patient HAI0002664 2010-09-17 A10BH03 september 2
19176358 Patient HAI0002664 2010-09-17 A10BA02 september 3
17765433 Patient HAI0006637 2010-09-17 A10BA02 september 4
12953451 Patient HAI0007418 2010-06-04 A10BA02 june 1
15786889 Patient HAI0007418 2010-07-28 A10BB09 july 1
15787103 Patient HAI0007418 2010-07-12 A10BB09 july 2
15787233 Patient HAI0007418 2010-07-05 A10BA02 july 3
15878776 Patient HAI0007418 2010-07-08 A10BB09 july 4
15908690 Patient HAI0007418 2010-07-23 A10BB09 july 5
17363576 Patient HAI0007418 2010-08-20 A10BB09 august 1
17554737 Patient HAI0007418 2010-08-13 A10BB09 august 2
之前的尝试
df$obs<-with(df, ave(month, hai_dispense_number, FUN=seq_along)) ##doesn't split by month
df$obs<-with(df, ave(month, hai_dispense_number, FUN=cumsum)) ##gives all NA values, think seq_along is actually what I want
df$obs <- ave(df$month, df$month, FUN=seq_along) ##this is better than the previous two, but doesn't seem to split by person
ddply(df,~month,summarise,mean=mean(obs)) ##this works absolutely fine, just need to counts right first!
会重视任何人可以提供给我的任何意见。似乎我在这里遇到了一些根本性的错误。
【问题讨论】:
-
如果您“只”需要计算因子水平的每个组合,您可以尝试
table。这可能是什么:with(df, data.frame(table(hai_dispense_number, month)))? -
@Henrik 不错的简单解决方案!谢谢!
标签: r