作者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://webptt.com/cn.aspx?n=bbs/R_Language/M.1433860123.A.F21.html
1F:→ nelsonlibra: 补充一下,资料档用read.xlsx的方式汇入成data.frame 06/09 22:33
2F:推 celestialgod: 直接新增变数 rowindex=1:nrow 然後再新增 g=round( 06/09 23:04
3F:推 celestialgod: (rowindex-1)/1000), 再用split切割, 然後lapply 06/09 23:04
4F:推 celestialgod: write.csv 06/09 23:04
5F:推 celestialgod: 汇入应该可以用list.files做吧 06/09 23:36
6F:推 Wush978: 利用for loop/while loop 搭配data.frame subsetting 06/09 23:41
7F:→ gsuper: linux OS 还是 windows? 06/10 10:18
8F:→ gsuper: 档案列数 <- system("wc -l 档案",intern=TRUE) 06/10 10:20
9F:→ gsuper: LOOP <- ceiling(档案列数 / 1000) 06/10 10:20
10F:→ gsuper: for(g in 1:LOOP) 06/10 10:21
11F:→ gsuper: {tmp<-read.table(档案,skip=1000*(g-1),nrow=1000)} 06/10 10:21
12F:→ nelsonlibra: OS是Windows 06/10 17:45
13F:→ nelsonlibra: 谢谢大大的方法!! 还在试着写看看用loop怎麽写出来。 06/10 17:46
14F:→ nelsonlibra: 我需要统整一下,我在汇入raw data的时候,就应该用 06/10 18:00
15F:→ nelsonlibra: list.files来做,然後把我产出档名的方式先跑出来。 06/10 18:01
16F:→ nelsonlibra: 接着增加rowindex跟group的两个的向量 06/10 18:02
17F:→ nelsonlibra: 接着用rowindex跟group这两个list,跟档名的list 06/10 18:03
18F:→ nelsonlibra: 当作for loop的参数来自动产出我要的csv档吗? 06/10 18:04