Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用FOR循环查找变量之和?_R_Loops_Dataframe - Fatal编程技术网

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

使用FOR循环查找变量之和?,r,loops,dataframe,R,Loops,Dataframe,我有一个数据框架,其中包含我从国家排放清单网站获得的6个变量的6497651个观测值,它包含以下变量: fips SCC Pollutant Emissions type year 09001 10100401 PM25 15.14 POINT 1999 09001 10100402 PM25 234.75 POINT 1999 其中,fips为县代码,SCC为源字符串名称,

我有一个数据框架,其中包含我从国家排放清单网站获得的6个变量的6497651个观测值,它包含以下变量:

fips    SCC       Pollutant     Emissions    type    year
09001   10100401  PM25          15.14        POINT   1999
09001   10100402  PM25          234.75       POINT   1999
其中,
fips
为县代码,
SCC
为源字符串名称,
污染物
为污染物类型(本例中为PM2.5排放量),
排放量
表示污染物排放量,单位为吨,
类型
为污染物排放源类型(道路、非道路、点等)和
年份
记录了1999年至2008年的年份

基本上,我必须绘制一个简单的线条图,以展示每年排放水平的变化。现在,仅1999年就有上千次观测,;2008年之前的其他年份也是如此。这个问题一点也不难,因为我可以很容易地用记录的所有排放量的总和为每年形成一个新的数据框架,然后将所有这些子集数据框架进行行绑定。但更有效、更整洁的方法可能是使用FOR循环,我可以根据每年计算“排放量”下所有值的总和,并将所有信息存储到新的数据框中,但我仍无法确定从何开始。如何输入将根据每年计算值总和的确切语法?我应该有这样一个数据框:

Year    Emissions

其中,
排放量
记录了该特定年份所有排放量的总和。

数据。表
包可能是处理此类问题最有效的包。计算每年排放总量的语法如下(假设您的数据存储在
dt
):


一个
dplyr/ggplot
选项。我们按“年”分组,使用
summary
获得“排放量”的
summary
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')

别绕圈子,绕圈子。看见例如:
ddply(data,.(Year),function(x){em_sum可能
with(mydata,tapply(Emissions,Year,sum))
。最好在预期结果中添加一些实际样本数据。根据@PierreI的要求添加的详细信息建议使用
setDT()
而不是
数据。table()
它从data.frame返回data.table而不进行深度复制。它已经存在很长时间了。
ggplot(df1, aes(x=year, y=Emissions)) + 
                stat_summary(fun.y='sum', geom='line')