library(magrittr) # 有pipe用,沒其它作用
# 還原原始資料文字檔為dt.txt
txt <- "V1
LAYER: 34 ;
DATATYPE: 0 ;
0;0
10;0
10;0.9
0;0.9
0;0
LAYER: 34 ;
DATATYPE: 0 ;
0;9.1
10;9.1
10;10
0;10
0;9.1
LAYER: 44 ;
DATATYPE: 10 ;
9.52;1.3
9.8;1.3
9.8;9.1
9.52;9.1
9.52;1.3
"
cat(txt, file = "dt.txt")
# 讀文字檔並做初步清理
con <- file("dt.txt", "r")
txt <- readLines(con)[-1] %>% gsub("( +;$)|( +)", "", .)
close(con)
# 捉到LAYER列與DATATYPE列及其資料
r.layer <- grep("^LAYER:[[:digit:]]+$", txt)
c.layer <- txt[r.layer] %>% gsub("LAYER:", "", .) %>% as.integer
r.datatype <- grep("^DATATYPE:[[:digit:]]+$", txt)
c.datatype <- txt[r.datatype] %>% gsub("DATATYPE:", "", .) %>% as.integer
# 捉出每一群有幾項
n <- diff(c(r.layer, length(txt)+1)) - 2
data.frame(
V1 = txt[-c(r.layer, r.datatype)],
group = rep.int(1:length(n), n),
`L;D` = paste0(c.layer, ";", c.datatype) %>% rep(., n)
)
bGlicmFyeShtYWdyaXR0cikgIyDmnIlwaXBl55So77yM5rKS5YW25a6D5L2c55SoCgojIOmChOWOn+WOn+Wni+izh+aWmeaWh+Wtl+aqlOeCumR0LnR4dAp0eHQgPC0gIlYxCkxBWUVSOiAzNCA7CkRBVEFUWVBFOiAwIDsKMDswCjEwOzAKMTA7MC45CjA7MC45CjA7MApMQVlFUjogMzQgOwpEQVRBVFlQRTogMCA7CjA7OS4xCjEwOzkuMQoxMDsxMAowOzEwCjA7OS4xCkxBWUVSOiA0NCA7CkRBVEFUWVBFOiAxMCA7CjkuNTI7MS4zCjkuODsxLjMKOS44OzkuMQo5LjUyOzkuMQo5LjUyOzEuMwoiCmNhdCh0eHQsIGZpbGUgPSAiZHQudHh0IikKCiMg6K6A5paH5a2X5qqU5Lim5YGa5Yid5q2l5riF55CGCmNvbiA8LSBmaWxlKCJkdC50eHQiLCAiciIpCnR4dCA8LSByZWFkTGluZXMoY29uKVstMV0gJT4lIGdzdWIoIiggKzskKXwoICspIiwgIiIsIC4pCmNsb3NlKGNvbikKCiMg5o2J5YiwTEFZRVLliJfoiIdEQVRBVFlQReWIl+WPiuWFtuizh+aWmQpyLmxheWVyIDwtIGdyZXAoIl5MQVlFUjpbWzpkaWdpdDpdXSskIiwgdHh0KQpjLmxheWVyIDwtIHR4dFtyLmxheWVyXSAlPiUgZ3N1YigiTEFZRVI6IiwgIiIsIC4pICU+JSBhcy5pbnRlZ2VyCnIuZGF0YXR5cGUgPC0gZ3JlcCgiXkRBVEFUWVBFOltbOmRpZ2l0Ol1dKyQiLCB0eHQpCmMuZGF0YXR5cGUgPC0gdHh0W3IuZGF0YXR5cGVdICU+JSBnc3ViKCJEQVRBVFlQRToiLCAiIiwgLikgJT4lIGFzLmludGVnZXIKCiMg5o2J5Ye65q+P5LiA576k5pyJ5bm+6aCFCm4gPC0gZGlmZihjKHIubGF5ZXIsIGxlbmd0aCh0eHQpKzEpKSAtIDIKCmRhdGEuZnJhbWUoCiAgVjEgPSB0eHRbLWMoci5sYXllciwgci5kYXRhdHlwZSldLAogIGdyb3VwID0gcmVwLmludCgxOmxlbmd0aChuKSwgbiksCiAgYEw7RGAgPSBwYXN0ZTAoYy5sYXllciwgIjsiLCBjLmRhdGF0eXBlKSAlPiUgcmVwKC4sIG4pCikK