我有一个数据框,我从国家排放清单网站获得6个变量的6,497,651个观测值,它有以下变量:
fips SCC Pollutant Emissions type year
09001 10100401 PM25 15.14 POINT 1999
09001 10100402 PM25 234.75 POINT 1999
fips
是县代码,SCC
是源字符串的名称,Pollutant
是污染物的类型(本例中为PM2.5排放),{{1} }表示以吨为单位排放的污染物的数量,Emissions
是排放污染物的来源类型(道路,非道路,点等),以及1999年至2008年间的type
笔记。
基本上,我必须绘制一个简单的线图,以显示每年排放水平的变化。现在,仅1999年就有超过一千个观察结果;在2008年之前的其余时间也是如此。问题并不困难,因为我可以轻松地为每年形成一个新的数据框,记录所有排放的总和,然后行绑定所有这些子集化的数据框。但是实现这一目标的更有效和更整洁的方法可能是使用FOR循环,我可以根据每年计算“排放”下所有值的总和,并将所有信息存储到新的数据框中,但我被卡住了在哪里开始。如何输入将根据每年计算值总和的确切语法?我应该有一个看起来像这样的数据框:
year
其中Year Emissions
记下该特定年份所有排放值的总和。
答案 0 :(得分:1)
data.table
包可能是处理这类事情的最有效的包。计算每年排放总和的语法就是这样(假设您的数据存储在dt
中):
library(data.table)
dt=data.table(dt)
dt[,.(Emissions=sum(Emissions)),by=year]
答案 1 :(得分:0)
dplyr/ggplot
选项。我们按“年”分组,获取“排放量”sum
。使用summarise
并使用ggplot
绘图。
library(dplyr)
library(ggplot2)
df1 %>%
group_by(year) %>%
summarise(Emissions=sum(Emissions)) %>%
ggplot(., aes(x=year, y=Emissions))+
geom_line()
或者这可以直接在ggplot
ggplot(df1, aes(x=year, y=Emissions)) +
stat_summary(fun.y='sum', geom='line')