r-根据另外两列中的值求和一列



我有一个数据框架,列出了1991-2020年间每个州的个别大规模枪击事件。我想1(求出每个州每年的受害者总数,2(求出各州每年发生的大规模枪击事件总数。

到目前为止,我只得到了1991-2020年间每个州的受害者总数。我甚至不知道我怎么能得到一个专栏,列出每个州每年发生的总事件。我可以对aggregate函数进行任何调整吗?或者有其他函数可以获得我想要的信息吗?

我所拥有的:

combined = read.csv('https://raw.githubusercontent.com/bandcar/massShootings/main/combo1991_2020_states.csv')
> head(combined)
state       date year fatalities injured total_victims
3342 Alabama 04/07/2009 2009          4       0             4
3351 Alabama 03/10/2009 2009         10       6            16
3285 Alabama 01/29/2012 2012          5       0             5
135  Alabama 12/28/2013 2013          3       5             8
267  Alabama 07/06/2013 2013          0       4             4
557  Alabama 06/08/2014 2014          1       4             5
q = aggregate(total_victims ~ state,data=combined,FUN=sum)
> head(q)
state total_victims
1    Alabama           364
2     Alaska            19
3    Arizona           223
4   Arkansas           205
5 California          1816
6   Colorado           315

每个州每年我想要什么:

year      state total_victims total_shootings
1 2009    Alabama            20               2           
2 2012    Alabama             5               1
3 2013    Alabama            12               2
4 2014    Alabama             5               1

您可以在tidyverse软件包中将group_bysummarise()结合使用。

library(tidyverse)
combined |> 
group_by(state, year) |> 
summarise(total_victims = sum(total_victims),
total_shootings = n())

这就是你得到的结果:

# A tibble: 457 x 4
# Groups:   state [52]
state    year total_victims total_shootings
<chr>   <int>         <int>           <int>
1 Alabama  2009            20               2
2 Alabama  2012             5               1
3 Alabama  2013            12               2
4 Alabama  2014            10               2
5 Alabama  2015            17               4

最新更新