按县和年份汇总数据

问题描述 投票:0回答:3

我有一个看起来像这样的数据框:

year <- year
month <- c(1,1,1,1,1,2,2,2,3,3)
county <- c("Upshur", "Upshur", "Upshur", "Collin","Collin","Upshur","Upshur", "Collin","Upshur","Collin")
citation <- c(1,0,1,1,1,0,1,0,1,1)
df <- data.frame(year, month, county, citation)

#  year month county citation 
#1 2007     1 Upshur        1
#2 2007     1 Upshur        0
#3 2007     1 Upshur        1
#4 2007     1 Collin        1
#5 2007     1 Collin        1
#6 2007     2 Upshur        0
#7 2007     2 Upshur        1
#8 2007     2 Collin        0
#9 2007     3 Upshur        1
#102007     3 Collin        1
#...  

我有警察停止的个别事件,根据引用是否有1或0来说明停止是否以引用或票证结束。我打算做的是将这些数据重新编入一个较小的数据框,其中说明了票数和引用的频率每个县每个月。基本上,看起来像这样的东西:

# year month county citations_given warnings_given
  2007     1 Upshur               2              1
  2007     1 Collin               2              0
  2007     2 Upshur               1              0
  2007     2 Collin               0              1
  2007     3 Upshur               1              0
  2007     3 Collin               1              0
...        

任何建议,将不胜感激!

r aggregate data-cleaning panel-data
3个回答
1
投票

我推荐dplyr包。

library(dplyr)

df %>%
  group_by(year, month, county) %>%
  summarize(citation_given = sum(citation),
            warnings_given = sum(citation == 0))

1
投票

我强烈建议使用data.table包。

library(data.table)
setDT(df)
df[,list(warn_given = sum(citation==0),cite_given = sum(citation)), 
   by=c('year', 'month', 'county')]

0
投票

考虑aggregate调用中的多个函数,使用基本包清理列名:

agg_df <- setNames(do.call(data.frame,
                  aggregate(citation ~ year + month + county, df, function(x)
                              c(citations_given = sum(x),
                                warnings_given = sum(x==0))
                           )
                  ), c("year", "month", "county", "citations_given", "warnings_given")
          )

agg_df

#   year month county citations_given warnings_given
# 1 2007     1 Collin               2              0
# 2 2007     2 Collin               0              1
# 3 2007     3 Collin               1              0
# 4 2007     1 Upshur               2              1
# 5 2007     2 Upshur               1              1
# 6 2007     3 Upshur               1              0
© www.soinside.com 2019 - 2024. All rights reserved.