作者nelsonlibra (Nelson C.')
看板R_Language
標題[問題] data.frame以row counts切割的問題
時間Tue Jun 9 22:28:41 2015
[問題類型]:
程式諮詢(我想用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