如何在R中的每一列中添加第12个元素?

时间:2013-05-06 11:05:21

标签: r dataframe

我有一个数据框df,其中包含多年的月度数据。

第一列包含日期(并命名为date)。

第二列包含月度数据(名称为data)。

这是一个数据框,我不想求助于特定的R包。

如何计算每月(1月至12月)的平均值? 那就是我如何计算data列中每12个元素的平均值?

以下是示例数据

date    data
01-83   498957
02-83   493861
03-83   496304
04-83   422322
05-83   379474
06-83   319446
07-83   332270
08-83   362075
09-83   318477
10-83   283378
11-83   214823
12-83   185131
01-84   160663
02-84   192201
03-84   212521
04-84   249950
05-84   274998
06-84   332064
07-84   364159
08-84   384619
09-84   439380
10-84   445955
11-84   493763
12-84   463612
01-85   314638
02-85   368237
03-85   254565
04-85   201342
05-85   230851
06-85   227190
07-85   264440
08-85   297501
09-85   503771
10-85   698504
11-85   768215
12-85   852077
01-86   939023
02-86   941674
03-86   861596
04-86   810595
05-86   666097
06-86   643074
07-86   640936
08-86   626805
09-86   615487
10-86   650764
11-86   665444
12-86   565598
01-87   511561
02-87   475577
03-87   451673
04-87   406587
05-87   394605
06-87   429394
07-87   509071
08-87   567143
09-87   664491
10-87   688447
11-87   602141
12-87   513640

2 个答案:

答案 0 :(得分:5)

你走了:

> tapply(df$data,substr(df$date,1,2),mean)
      01       02       03       04       05       06       07       08       09       10       11       12 
484968.4 494310.0 455331.8 418159.2 389205.0 390233.6 422175.2 447628.6 508321.2 553409.6 548877.2 516011.6 

答案 1 :(得分:3)

mean(df[df$date=="January","data"])
#etc. for each month...

编辑(基于查看实际数据):

by(df$data,substr(df$date,1,2),FUN=mean)