[問題] data.frame以row counts切割的問題

看板R_Language作者 (Nelson C.')時間9年前 (2015/06/09 22:28), 編輯推噓5(5013)
留言18則, 4人參與, 最新討論串1/1
[問題類型]: 程式諮詢(我想用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

06/09 22:33, , 1F
補充一下,資料檔用read.xlsx的方式匯入成data.frame
06/09 22:33, 1F

06/09 23:04, , 2F
直接新增變數 rowindex=1:nrow 然後再新增 g=round(
06/09 23:04, 2F

06/09 23:04, , 3F
(rowindex-1)/1000), 再用split切割, 然後lapply
06/09 23:04, 3F

06/09 23:04, , 4F
write.csv
06/09 23:04, 4F

06/09 23:36, , 5F
匯入應該可以用list.files做吧
06/09 23:36, 5F

06/09 23:41, , 6F
利用for loop/while loop 搭配data.frame subsetting
06/09 23:41, 6F

06/10 10:18, , 7F
linux OS 還是 windows?
06/10 10:18, 7F

06/10 10:20, , 8F
檔案列數 <- system("wc -l 檔案",intern=TRUE)
06/10 10:20, 8F

06/10 10:20, , 9F
LOOP <- ceiling(檔案列數 / 1000)
06/10 10:20, 9F

06/10 10:21, , 10F
for(g in 1:LOOP)
06/10 10:21, 10F

06/10 10:21, , 11F
{tmp<-read.table(檔案,skip=1000*(g-1),nrow=1000)}
06/10 10:21, 11F

06/10 17:45, , 12F
OS是Windows
06/10 17:45, 12F

06/10 17:46, , 13F
謝謝大大的方法!! 還在試著寫看看用loop怎麼寫出來。
06/10 17:46, 13F

06/10 18:00, , 14F
我需要統整一下,我在匯入raw data的時候,就應該用
06/10 18:00, 14F

06/10 18:01, , 15F
list.files來做,然後把我產出檔名的方式先跑出來。
06/10 18:01, 15F

06/10 18:02, , 16F
接著增加rowindex跟group的兩個的向量
06/10 18:02, 16F

06/10 18:03, , 17F
接著用rowindex跟group這兩個list,跟檔名的list
06/10 18:03, 17F

06/10 18:04, , 18F
當作for loop的參數來自動產出我要的csv檔嗎?
06/10 18:04, 18F
文章代碼(AID): #1LTlWRyX (R_Language)