Here's a solution with dplyr. dplyr is the next iteration of plyr and is very fast.
library(dplyr)
Ex %.% group_by(Y3) %.% mutate(X5 = cumsum(Y2))
#> Source: local data frame [11 x 7]
#> Groups: Y3
#>
#> X1 X2 Y1 Y2 Y3 date X5
#> 1 -36.8598 64.260 493.8154 489.7042 19 2013-06-01 489.7042
#> 2 -37.1726 63.085 493.8154 489.7042 19 2013-06-02 979.4083
#> 3 -36.4343 66.360 494.5417 490.7110 19 2013-06-03 1470.1193
#> 4 -36.8644 61.080 494.6136 490.6532 23 2013-06-04 490.6532
#> 5 -37.0599 61.570 494.6138 490.7106 30 2013-06-05 490.7106
#> 6 -34.8818 65.040 494.3872 489.8229 43 2013-06-06 489.8229
#> 7 -31.9907 72.690 494.6412 488.1609 43 2013-06-07 977.9838
#> 8 -37.8304 63.830 493.7326 489.7478 2 2013-06-08 489.7478
#> 9 -34.3367 67.555 494.0425 490.6006 58 2013-06-09 490.6006
#> 10 -31.2984 76.060 494.9299 488.9467 47 2013-06-10 488.9467
#> 11 -33.5731 68.610 494.9838 490.3990 61 2013-06-11 490.3990