s******d 发帖数: 303 | 1 需要 infile 的是个很大的csv file 有2000 samples, 每个sample 作了 500 次检查,
每次检查包括3个项目. 现在的格式是 sample*tests
sample1, exam1, outcome1, outcome2, outcome3
sample1, exam2, outcome1, outcome2, outcome3
....
....
sample1, exam500, outcome1, outcome2, outcome3
现在需要从这个大csv file 读取数据, 每个sample 一个file. 每个file 包括500次
exam 以及相应的3个outcomes.
由于我不需要读取所有的sample, 只是挑选其中的495个sample,然后每个sample输出成
一个file. 问题是
1)我不想手工重复495次操作,
2)那个csv file 很大,如果我为了每一个sample 都重新读一边这个csv file, 时间
会很长。
有没有什么办法读一篇csv file 就自动输出495 sample 的file, | l*****k 发帖数: 587 | 2 use perl to read your samples into an array, then
loop through your file
system(grep sample infile > sample.csv)
I also think combination of uniq, awk commands can also achieve
that in shell
查,
【在 s******d 的大作中提到】 : 需要 infile 的是个很大的csv file 有2000 samples, 每个sample 作了 500 次检查, : 每次检查包括3个项目. 现在的格式是 sample*tests : sample1, exam1, outcome1, outcome2, outcome3 : sample1, exam2, outcome1, outcome2, outcome3 : .... : .... : sample1, exam500, outcome1, outcome2, outcome3 : 现在需要从这个大csv file 读取数据, 每个sample 一个file. 每个file 包括500次 : exam 以及相应的3个outcomes. : 由于我不需要读取所有的sample, 只是挑选其中的495个sample,然后每个sample输出成
| p********a 发帖数: 5352 | 3 这个不是软件的问题,是逻辑的问题。用SAS INFILE读一次输入到495个FILES就可以了
。SAS那个SINGLE @就是专门HOLD变量值,检测是否继续读下去的。唉,和你说再多也
没用啊。 | s******d 发帖数: 303 | 4 我用grep 式了一下,估计半个小时到1个小时的样子。因为我对bash script 不太熟,
所以我并不是特别prefer 用unix 的command 来写script.
我也式了sas, 到现在三个多小时了,还没弄出一个来。 | l*****k 发帖数: 587 | 5 those "ancient" unix commands are amazingly efficient, think
the computing power and memory space available to them in the
old days.
【在 s******d 的大作中提到】 : 我用grep 式了一下,估计半个小时到1个小时的样子。因为我对bash script 不太熟, : 所以我并不是特别prefer 用unix 的command 来写script. : 我也式了sas, 到现在三个多小时了,还没弄出一个来。
| R******d 发帖数: 1436 | 6 step=500;for((i=1;i<990000;i+=$step)); do sed -n ''$i,`expr $i + $step - 1`
p'' file > file$i;done | s*r 发帖数: 2757 | 7 paypal me 49.5 dollar.
i will write a perl script for you which can do the work under unix
查,
【在 s******d 的大作中提到】 : 需要 infile 的是个很大的csv file 有2000 samples, 每个sample 作了 500 次检查, : 每次检查包括3个项目. 现在的格式是 sample*tests : sample1, exam1, outcome1, outcome2, outcome3 : sample1, exam2, outcome1, outcome2, outcome3 : .... : .... : sample1, exam500, outcome1, outcome2, outcome3 : 现在需要从这个大csv file 读取数据, 每个sample 一个file. 每个file 包括500次 : exam 以及相应的3个outcomes. : 由于我不需要读取所有的sample, 只是挑选其中的495个sample,然后每个sample输出成
| D******n 发帖数: 2836 | 8 first 495 samples or the ones u specified?
if only first 495 samples , it is easy.
head -247500 yourfile.csv|split -l 500 - smallfile -d
查,
【在 s******d 的大作中提到】 : 需要 infile 的是个很大的csv file 有2000 samples, 每个sample 作了 500 次检查, : 每次检查包括3个项目. 现在的格式是 sample*tests : sample1, exam1, outcome1, outcome2, outcome3 : sample1, exam2, outcome1, outcome2, outcome3 : .... : .... : sample1, exam500, outcome1, outcome2, outcome3 : 现在需要从这个大csv file 读取数据, 每个sample 一个file. 每个file 包括500次 : exam 以及相应的3个outcomes. : 由于我不需要读取所有的sample, 只是挑选其中的495个sample,然后每个sample输出成
| l*****k 发帖数: 587 | 9 Kao, business man:
open IFILE, "
while() {
chomp
print "extracting $_ right now \n";
$ofilename = $_.".txt";
system("grep $_ your150Gfile > $ofilename")
}
【在 s*r 的大作中提到】 : paypal me 49.5 dollar. : i will write a perl script for you which can do the work under unix : : 查,
| s******d 发帖数: 303 | | s******d 发帖数: 303 | 11 thanks, leohawk. the prog works. |
|