使用FOR循环找出变量之和?

时间:2015-09-24 19:44:53

标签: r loops dataframe

我有一个数据框,我从国家排放清单网站获得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 记下该特定年份所有排放值的总和。

2 个答案:

答案 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')