[問題類型]:
程式諮詢(我想用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的語法還掌握不夠,麻煩各位大大提供解套方法!
先謝謝大家!!
作者: nelsonlibra (Nelson C.') 2015-06-09 22:33:00
補充一下,資料檔用read.xlsx的方式匯入成data.frame
作者:
gsuper (Logit(odds))
2015-06-10 10:18:00linux OS 還是 windows?檔案列數 <- system("wc -l 檔案",intern=TRUE)LOOP <- ceiling(檔案列數 / 1000)for(g in 1:LOOP){tmp<-read.table(檔案,skip=1000*(g-1),nrow=1000)}
作者: nelsonlibra (Nelson C.') 2015-06-10 17:45:00
OS是Windows謝謝大大的方法!! 還在試著寫看看用loop怎麼寫出來。我需要統整一下,我在匯入raw data的時候,就應該用list.files來做,然後把我產出檔名的方式先跑出來。接著增加rowindex跟group的兩個的向量接著用rowindex跟group這兩個list,跟檔名的list當作for loop的參數來自動產出我要的csv檔嗎?