Re: [問題] 非等長樣本拆分

看板R_Language作者 (天)時間10年前 (2015/11/18 11:45), 10年前編輯推噓2(204)
留言6則, 2人參與, 最新討論串2/2 (看更多)
用矩陣想一下就可以搞定了~~ 不用想得太複雜XD 樣本太大,再考慮其他做法吧,不然一般情況下,matrix + for滿快的 (#1LkRShkm (R_Language) ) 我有想到用apply做,可是速度還是太慢XD,最好的方式還是用matrix + for~~ library(magrittr) dat = read.csv("simul1.csv", header = TRUE) %>% as.matrix out = replicate(3, matrix(NA, nrow(dat), max(dat[,1]) + 1), simplify = FALSE) for (i in 1:nrow(dat)) { for (k in 1:3) out[[k]][i, 1:(dat[i,1]+1)] = c(dat[i,1], dat[i, ((k-1)*dat[i,1]+1):(k*dat[i,1])]) } for (k in 1:3) out[[k]] %>% set_colnames(c('length', paste0('V', 1:(ncol(.)-1)))) %>% write.csv(paste0('outData_', k, '.csv')) ※ 引述《sinclairJ (SunnyGymBoy)》之銘言: : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 每一列為一樣本 每個樣本有些非等長 : 一樣本裡有三條時間序列 (長度為length) : 我要把每個樣本的三條序列分開 : 之後再把每樣本的全部第一條序列存成csv : 每樣本的第二條序列也存成csv : 第三條也是 ,所以共會輸出三個檔案 : [範例示意]: : Data length v1 v2 v3 v4 v5 v6 : 1 2 5 4 3 1 2 1 : 2 1 4 3 2 : 3 2 1 2 6 8 7 1 : ps. 以Data1 來說明 : 5,4就是第一條時間序列,3,1是第二條...以此類推, v為時間點,每個樣本時間點非等長 : csv1: : Data length v1 v2 : 1 2 5 4 : 2 1 4 : 3 2 1 2 : csv2: : Data length v1 v2 : 1 2 3 1 : 2 1 3 : 3 2 6 8 : csv3 : Data length v1 v2 : 1 2 2 1 : 2 1 2 : 3 2 7 1 : 資料連結: : https://www.dropbox.com/s/mwzfou8m22bb1jm/simul1.csv?dl=0 : 感謝各位前輩指導 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.73.89 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1447818338.A.6DC.html ※ 編輯: celestialgod (140.109.73.89), 11/18/2015 11:56:02

11/19 18:12, , 1F
想請教%>%是什麼樣的指令呢?古哥大神不回我qq
11/19 18:12, 1F

11/19 18:13, , 2F
直接在板上搜尋magrittr吧
11/19 18:13, 2F

11/19 18:20, , 3F
另外最後一行的存檔路徑可以做到指定路徑嗎?因為加路
11/19 18:20, 3F

11/19 18:20, , 4F
徑進去程式會出錯 沒加路徑的話電腦找不到檔案qq
11/19 18:20, 4F

11/19 18:21, , 5F
好的 感謝前輩
11/19 18:21, 5F

11/19 18:24, , 6F
可以加啊,你應該是哪裡沒弄對吧
11/19 18:24, 6F
文章代碼(AID): #1MI_HYRS (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1MI_HYRS (R_Language)