2011-08-10: "1"
2011-08-12: "1"
2011-08-19: "0.998"
2011-08-26: "1"
2011-09-02: "0.993"
.
.
.
2015-01-05: "1.145"
2015-01-06: "1.209"
2015-01-07: "1.208"
2015-01-08: "1.244"
2015-01-09: "1.249"
2015-01-12: "1.295"
2015-01-13: "1.337"
2015-01-14: "1.325"
.
.
.
2015-12-17: "3.001"
2015-12-18: "2.954"
2015-12-21: "2.941"
2015-12-22: "2.996"
2015-12-23: "2.896"
2015-12-24: "2.94"
2015-12-25: "2.953"
2015-12-28: "2.96"
2015-12-29: "3.02"
2015-12-30: "3.126"
2015-12-31: "3.062"
有一批历史数据是这样的,从 11 年的 8 月 10 日开始,每一个工作日,会得到一个监测值。
现在需要做的是用每年最后一天(考虑周末等情况,不一定是 12 月 31 日)的监测值减去每年第一天(考虑公共假期,不一定是 1 月 1 日)的监测值得到一个差值。五个年份的差值都拿到以后计算它的方差和标准差。
不过第一步费了好长时间也没想出一个好的方法来取到一年中第一天和最后一天的数值。希望大家集思广益,一起探讨个算法出来。感谢。
1
c742435 2016-01-03 00:28:51 +08:00
遍历一遍也用不了多久。
|
2
zakokun 2016-01-03 00:33:05 +08:00
遍历一遍判断一下就行了呗,也不难
|
3
aaaron7 2016-01-03 01:01:13 +08:00
这个数据量,遍历即可。一个用 swift 写的简单示例:
let arr = ["2015-12-01","2015-12-02","2015-01-16","2015-01-08", "2011-08-19","2015-12-30","2014-01-12","2014-01-12","2014-01-12","2014-04-12","2014-10-12","2014-01-12","2014-11-12","2014-01-13"] func getFirstLastDayOf(year : String!)->(first : String?,last : String?){ let r = arr.filter({$0.hasPrefix(year)}) return (r.minElement(),r.maxElement()) } PS :这里简化了输入 |
4
imn1 2016-01-03 08:11:41 +08:00
In [1]: bool("2015-01-04">"2014-12-31")
Out[1]: True In [2]: bool("2014-12-30">"2015-01-01") Out[2]: False min(for x in date if x>"2014-12-31") |
5
Comdex 2016-01-03 15:12:31 +08:00
这些数据是按日递增的,那比如说找出最后一次出现的 2011 年的不是很简单么?
|