加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

MIT-scheme写的一个数据处理程序

发布时间:2020-12-14 02:35:04 所属栏目:大数据 来源:网络整理
导读:;;;in2out.scm ;;读取整个文件,每行为一项,返回列表。 (define (read-block iport) (do ((data '() (read-line iport)) (return '() (append return (list data))) ) ((eof-object? data) (cdr return)) ) ) ;;写文件,每个子项为一行 (define (write-bloc

;;;in2out.scm

;;读取整个文件,每行为一项,返回列表。

(define (read-block iport)

(do ((data '() (read-line iport))

(return '() (append return (list data)))

)

((eof-object? data) (cdr return))

)

)

;;写文件,每个子项为一行

(define (write-block data port)

(do ((data data (cdr data))

(return '() (if (null? data)

'()

(write-line (car data) port)

)

)

)

((null? data) return)

)

)

;;去掉整个列表的标签

(define (block-drop-flag data)

(do ((data data (cdr data))

(result '() (append result (list (drop-flag (car data)))))

)

((null? data) result)

)

)

;;扫描整个列表,标出每个类型数据的开始位置的索引,返回eg:(0 4 8 23 ...)

;;这功能可能用不上?

(define (scan-block data)

(do ((data data (cdr data))

(index 0 (+ index 1))

?

(flag #t (if (string=? (get-flag (car data)) (get-flag (car (cdr data))))

?#t

?#f

?

?)

)

?

? ? (return '() (if (not flag)?

(append return (list index))

return

)

)

)

((null? (cdr data)) (append return (list (+ index 1))))

)

)

;;计算出每个字列的最大最小 生成一个新列表

(define (class-min-max data)

(do ((data data (cdr data))

(return '() (append return (list (get-min-max2 (car data)))))

)

((null? data) return)

)

)

;;按标致分组给定列表

(define (div-block data)

(do ((data data (cdr data))

(flag #t (if (string=? (get-flag (car data)) (get-flag (car (cdr data))))

?#t

?#f ?

?)

)

(return '() (if flag

(append return (list (drop-flag (car data))))

(append '() (list (drop-flag (car data))))

)

)

(return2 '() (if flag

?return2

?(append return2 (list return))

?)

)

)

((null? (cdr data)) (append return2 (list (append return (list (drop-flag (car data)))))))

)

)

;;取列表中的最小值和最大值,返回min/max格式的字符串

(define (get-min-max data)

(do ((data data (cdr data))

(maxa "" (cond ((string>? maxa (car data)) maxa)

((string>? (car data) maxa) (car data))

(else maxa)

?)

)

(mina "" (cond ((string<? mina (car data)) mina)

((string<? (car data) mina) (car data))

(else mina)

?)

) ?

);这里是结构体

?;下面是结束条件

((null? data) (string-append mina "/" maxa))

)

)

(define (get-min-max2 data)

(define (iter xdata)

? ?(string-append (first xdata) "/" (list-ref xdata (- (length xdata) 1)))

)

(iter (sort data string<?))

)

;;返回去掉标签后的字符串,E1,20100909 => 20100909

(define (drop-flag str)

(substring str (+ 1 (string-search-forward "," str)) (string-length str))

)

;;获取给定字符串的标签,E1,20100909 => E1

(define (get-flag str)

(substring str 0 (string-search-forward "," str))

)

;;main

(define (in2out inport outport)

(write-block (class-min-max (div-block (read-block inport)))?

outport

)

)

;;;;;------Main---------------------------------------------------

(define inport (open-input-file "D:Workroomwkroomin2outin.csv"))

(define outport (open-output-file "D:Workroomwkroomin2outout.csv"))

(newline)

(define a (read-block inport))

(define b (div-block a))

(define d (class-min-max b))


(display (get-min-max2 '("20100909" "20100909")))

(write-block d outport)

(newline)

(close-all-open-files)

------------------------------运行方法---------------------------------------

start "" "D:MIT-GNU Schemebinmit-scheme.exe" ?--heap 5000 --library "D:MIT-GNU Schemelib" --load in2out.scm?

-------------------------in.csv文件内容如下:部分不完整-------------------------------------------


E1,20100909

E1,20110907

E1,20101021

E1,20101207

E2,20110513

E2,20101014

E2,20100918

E2,20100905

E3,20101230

E3,20101220

E3,20110310

E3,20110109

E3,20110301

E3,20110505

E3,20110427

E3,20110422

E3,20111214

E3,20111217

E3,20111108

E3,20131018

E3,20131004

E3,20130428

E3,20130417

E4,20101123

E4,20110802

E4,20120305

E4,20120312

E5,20110401

E5,20110711

E5,20111220

E6,20120327

E6,20120330

E6,20120515

E6,20120910

E7,20101231

E7,20101229

E7,20111129

E7,20120228

E7,20111205

E7,20111228

E8,20110623

E8,20110630

E8,20101231

E8,20110630

E9,20110622

E9,20110623

E9,20110220

E9,20110630

E10,20110506

E10,20110530

E11,20101231

E11,20110630

E12,20110529

E12,20110630

E13,20110210

E14,20101201

E14,20110630

E14,20110226

E14,20110630

E15,20110223

E15,20111120

E15,20110226

E15,20110226

E16,20110721

E16,20110829

-------------------------运行程序后输出out.csv----------------------------

"20100909/20110907"

"20100905/20110513"

"20101220/20131018"

"20101123/20120312"

"20110401/20111220"

"20120327/20120910"

"20101229/20120228"

"20101231/20110630"

"20110220/20110630"

"20110506/20110530"

"20101231/20110630"

"20110529/20110630"

"20110210/20110630"

"20101201/20110630"

"20110223/20111120"

"20110721/20110829"

"20110413/20110721"

"20111120/20130812"

"20101201/20101201"

"20110218/20110609"

"20101130/20110501"

"20111207/20120726"

"20111120/20130908"

"20101201/20101201"

"20110917/20130523"

"20101229/20101229"

"20111120/20130523"

"20110116/20110116"

"20110917/20130908"

"20110529/20111120"

"20130903/20130903"

"20110111/20110111"

"20110917/20130801"

"20120401/20130802"

"20130926/20130926"

"20111030/20111030"

"20130506/20131111"

"20110912/20110912"

"20101129/20130509"

"20110912/20110912"

"20101123/20111120"

"20111031/20120906"

"20110705/20110705"

"20110705/20110705"

"20110702/20110702"

"20110702/20110702"

"20110703/20110703"

"20110703/20110703"

"20110703/20110703"

"20110703/20110703"

"20110705/20110705"

"20110705/20110705"

"20110719/20110719"

"20110705/20110705"

"20110719/20110719"

"20110719/20110719"

"20110719/20110719"

"20110719/20110719"

"20110719/20110719"

"20110719/20110719"

"20110718/20110718"

"20110719/20110719"

"20101102/20101122"

"20110718/20110718"

"20110718/20110718"

"20111031/20111031"

"20111031/20111031"

"20111221/20111221"

"20121008/20121008"

"20120527/20120527"

"20120717/20120717"

"20120730/20120730"

"20120926/20120926"

"20130328/20130328"

"20110222/20110914"

"20110218/20110913"

"20110218/20110909"

"20110727/20130322"

"20110219/20110909"

"20111130/20111130"

"20111130/20111130"

"20130427/20130427"

"20130427/20130427"

"20110222/20110909"

"20110228/20110913"

"20110503/20111203"

"20130726/20130726"

"20110223/20110908"

"20110118/20110908"

"20110913/20110913"

"20110909/20110909"

"20110909/20110909"

"20110908/20110908"

"20111217/20120830"

"20121127/20121127"

"20111205/20120327"

"20110919/20110919"

"20120129/20120401"

"20111205/20111205"

"20120129/20120129"

"20110908/20120326"

"20120129/20120401"

"20140106/20140412"

"20131220/20140304"

"20131007/20140124"

"20140112/20140225"

"20140202/20140202"

"20100903/20110815"

"20101029/20130616"

"20100910/20110901"

"20101101/20130615"

"20110701/20130515"

"20110630/20140221"

"20100915/20121103"

"20101120/20110520"

"20110620/20111221"

"20120220/20121118"

"20121218/20130618"

"20130718/20131218"

"20100929/20101101"

"20111029/20111104"

"20120830/20120925"

"20101205/20110802"

"20101027/20110424"

"20101103/20131106"

"20101023/20121024"

"20101025/20121024"

"20101025/20121024"

"20101020/20120412"

"20101009/20121024"

"20111010/20131016"

"20111009/20131016"

"20110223/20111013"

"20111019/20120106"

"20120107/20120625"

"20101227/20110801"

"20110803/20111016"

"20111018/20111214"

"20111216/20121220"

"20120422/20120612"

"20120613/20130422"

"20101122/20110224"

"20110219/20110525"

"20110525/20110807"

"20110808/20111015"

"20111016/20111213"

"20111214/20120409"

"20120410/20120613"

"20120614/20120813"

"20120814/20121009"

"20121010/20121219"

"20121221/20130602"

"20130420/20130516"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读