看板 R_Language 關於我們 聯絡資訊
用矩陣想一下就可以搞定了~~ 不用想得太複雜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
sinclairJ: 想請教%>%是什麼樣的指令呢?古哥大神不回我qq 11/19 18:12
celestialgod: 直接在板上搜尋magrittr吧 11/19 18:13
sinclairJ: 另外最後一行的存檔路徑可以做到指定路徑嗎?因為加路 11/19 18:20
sinclairJ: 徑進去程式會出錯 沒加路徑的話電腦找不到檔案qq 11/19 18:20
sinclairJ: 好的 感謝前輩 11/19 18:21
celestialgod: 可以加啊,你應該是哪裡沒弄對吧 11/19 18:24