看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 收案資料約每個月需要做一次clean data的工作: 變項共有15個(含一項中文字串資料)。 個案數每個月約1000-3000不等。 程式功能需求 由於整理完的資料需要上傳特定系統,但系統每次只能吃1000筆個案數, 因此須將清過的資料每1000筆切割到一個獨立的CSV檔(含欄位名稱), 並命名第x個切割出的CSV檔為“G[x]_系統日期”的(西元年)格式。 特殊內容 但因為每個月的個案數不一定,需要程式能夠自行判斷即使最後一份 切割出的個案數列數不滿1000筆,仍產出一個CSV檔。 [程式範例]: 目前已經完成檔案命名的產出設定: CSVCoNaming <-if (nrow(G_Part_Co)%/%1000<= 0) { paste("G_",format(Sys.Date(),"%Y%m%d"),sep="") } else { paste("G",(1:(nrow(G_Part_Co)%/%1000+1)),"_", format(Sys.Date(),"%Y%m%d"),sep="") } CSVFoNaming <-if ((nrow(G_Part_Fo)%/%1000)<= 0) { paste("G_follow_",format(Sys.Date(),"%Y%m%d"),sep="") } else { paste("G",(1:(nrow(G_Part_Fo)%/%1000+1)),"follow_", format(Sys.Date(),"%Y%m%d"),sep="") } 剩下切割資料並命名CSV檔的功能寫不出來... 目前是想用split或subset切資料,再把切出來的用assign給已產出的檔名。 但由於需要動態查詢該月的個案數來寫功能,這部分需要請大家幫幫忙! [關鍵字]:切割資料by資料列數 小弟剛從SAS跳槽,對R的語法還掌握不夠,麻煩各位大大提供解套方法! 先謝謝大家!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.69.188 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1433860123.A.F21.html
nelsonlibra: 補充一下,資料檔用read.xlsx的方式匯入成data.frame 06/09 22:33
celestialgod: 直接新增變數 rowindex=1:nrow 然後再新增 g=round( 06/09 23:04
celestialgod: (rowindex-1)/1000), 再用split切割, 然後lapply 06/09 23:04
celestialgod: write.csv 06/09 23:04
celestialgod: 匯入應該可以用list.files做吧 06/09 23:36
Wush978: 利用for loop/while loop 搭配data.frame subsetting 06/09 23:41
gsuper: linux OS 還是 windows? 06/10 10:18
gsuper: 檔案列數 <- system("wc -l 檔案",intern=TRUE) 06/10 10:20
gsuper: LOOP <- ceiling(檔案列數 / 1000) 06/10 10:20
gsuper: for(g in 1:LOOP) 06/10 10:21
gsuper: {tmp<-read.table(檔案,skip=1000*(g-1),nrow=1000)} 06/10 10:21
nelsonlibra: OS是Windows 06/10 17:45
nelsonlibra: 謝謝大大的方法!! 還在試著寫看看用loop怎麼寫出來。 06/10 17:46
nelsonlibra: 我需要統整一下,我在匯入raw data的時候,就應該用 06/10 18:00
nelsonlibra: list.files來做,然後把我產出檔名的方式先跑出來。 06/10 18:01
nelsonlibra: 接著增加rowindex跟group的兩個的向量 06/10 18:02
nelsonlibra: 接著用rowindex跟group這兩個list,跟檔名的list 06/10 18:03
nelsonlibra: 當作for loop的參數來自動產出我要的csv檔嗎? 06/10 18:04